@salt-ds/lab 1.0.0-alpha.75 → 1.0.0-alpha.77

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 (794) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/css/salt-lab.css +284 -251
  3. package/dist-cjs/app-header/AppHeader.js.map +1 -1
  4. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
  5. package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +1 -1
  6. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  7. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  8. package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
  9. package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
  10. package/dist-cjs/button-bar/ButtonBar.js.map +1 -1
  11. package/dist-cjs/button-bar/OrderedButton.js.map +1 -1
  12. package/dist-cjs/button-bar/internal/ButtonBarContext.js.map +1 -1
  13. package/dist-cjs/button-bar/internal/DescendantContext.js.map +1 -1
  14. package/dist-cjs/button-bar/internal/useDescendant.js.map +1 -1
  15. package/dist-cjs/button-bar/internal/useDescendants.js.map +1 -1
  16. package/dist-cjs/calendar/Calendar.css.js +1 -1
  17. package/dist-cjs/calendar/Calendar.js +11 -2
  18. package/dist-cjs/calendar/Calendar.js.map +1 -1
  19. package/dist-cjs/calendar/CalendarGrid.js +38 -36
  20. package/dist-cjs/calendar/CalendarGrid.js.map +1 -1
  21. package/dist-cjs/calendar/CalendarMonthHeader.js +1 -1
  22. package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -1
  23. package/dist-cjs/calendar/CalendarNavigation.css.js +1 -1
  24. package/dist-cjs/calendar/CalendarNavigation.js +20 -13
  25. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
  26. package/dist-cjs/calendar/CalendarWeekHeader.css.js +1 -1
  27. package/dist-cjs/calendar/CalendarWeekHeader.js +1 -1
  28. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
  29. package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
  30. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  31. package/dist-cjs/calendar/internal/CalendarDay.js +26 -36
  32. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  33. package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
  34. package/dist-cjs/calendar/internal/CalendarMonth.js +30 -9
  35. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  36. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  37. package/dist-cjs/calendar/internal/utils.js.map +1 -1
  38. package/dist-cjs/calendar/useCalendar.js +7 -9
  39. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  40. package/dist-cjs/calendar/useCalendarDay.js +7 -11
  41. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  42. package/dist-cjs/calendar/useCalendarSelection.js +144 -76
  43. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  44. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  45. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  46. package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
  47. package/dist-cjs/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
  48. package/dist-cjs/cascading-menu/internal/keydownHandlers.js.map +1 -1
  49. package/dist-cjs/cascading-menu/internal/menuPositioning.js.map +1 -1
  50. package/dist-cjs/cascading-menu/internal/stateUtils.js.map +1 -1
  51. package/dist-cjs/cascading-menu/internal/useClickAway.js.map +1 -1
  52. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  53. package/dist-cjs/cascading-menu/internal/useMountedRef.js.map +1 -1
  54. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  55. package/dist-cjs/cascading-menu/internal/useRefsManager.js.map +1 -1
  56. package/dist-cjs/cascading-menu/internal/useStateReducer.js.map +1 -1
  57. package/dist-cjs/cascading-menu/stateChangeTypes.js.map +1 -1
  58. package/dist-cjs/color-chooser/AlphaInputField.js.map +1 -1
  59. package/dist-cjs/color-chooser/Color.js.map +1 -1
  60. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  61. package/dist-cjs/color-chooser/ColorHelpers.js.map +1 -1
  62. package/dist-cjs/color-chooser/ColorPicker.js.map +1 -1
  63. package/dist-cjs/color-chooser/DictTabs.js.map +1 -1
  64. package/dist-cjs/color-chooser/GetColorPalettes.js.map +1 -1
  65. package/dist-cjs/color-chooser/HexInput.js.map +1 -1
  66. package/dist-cjs/color-chooser/RGBAInput.js.map +1 -1
  67. package/dist-cjs/color-chooser/RGBAInputField.js.map +1 -1
  68. package/dist-cjs/color-chooser/Swatch.js.map +1 -1
  69. package/dist-cjs/color-chooser/Swatches.js.map +1 -1
  70. package/dist-cjs/color-chooser/SwatchesPicker.js.map +1 -1
  71. package/dist-cjs/color-chooser/color-utils.js.map +1 -1
  72. package/dist-cjs/color-chooser/colorMap.js.map +1 -1
  73. package/dist-cjs/color-chooser/createTabsMapping.js.map +1 -1
  74. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  75. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  76. package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  77. package/dist-cjs/combo-box-deprecated/filterHelpers.js.map +1 -1
  78. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  79. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  80. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  81. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  82. package/dist-cjs/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  83. package/dist-cjs/common-hooks/calcPreferredHeight.js.map +1 -1
  84. package/dist-cjs/common-hooks/collectionProvider.js.map +1 -1
  85. package/dist-cjs/common-hooks/itemToString.js.map +1 -1
  86. package/dist-cjs/common-hooks/keyUtils.js.map +1 -1
  87. package/dist-cjs/common-hooks/list-dom-utils.js.map +1 -1
  88. package/dist-cjs/common-hooks/selectionTypes.js.map +1 -1
  89. package/dist-cjs/common-hooks/useAutoSizer.js.map +1 -1
  90. package/dist-cjs/common-hooks/useCollapsibleGroups.js.map +1 -1
  91. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  92. package/dist-cjs/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  93. package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
  94. package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  95. package/dist-cjs/common-hooks/useSelection.js.map +1 -1
  96. package/dist-cjs/common-hooks/useTypeahead.js.map +1 -1
  97. package/dist-cjs/common-hooks/useViewportTracking.js.map +1 -1
  98. package/dist-cjs/common-hooks/utils/collection-item-utils.js.map +1 -1
  99. package/dist-cjs/common-hooks/utils/filter-utils.js.map +1 -1
  100. package/dist-cjs/common-hooks/utils/isSelected.js.map +1 -1
  101. package/dist-cjs/contact-details/ContactAction.js.map +1 -1
  102. package/dist-cjs/contact-details/ContactActions.js.map +1 -1
  103. package/dist-cjs/contact-details/ContactAvatar.js.map +1 -1
  104. package/dist-cjs/contact-details/ContactDetails.js.map +1 -1
  105. package/dist-cjs/contact-details/ContactFavoriteToggle.js.map +1 -1
  106. package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
  107. package/dist-cjs/contact-details/ContactMetadataItem.js.map +1 -1
  108. package/dist-cjs/contact-details/ContactPrimaryInfo.js.map +1 -1
  109. package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
  110. package/dist-cjs/contact-details/ContactTertiaryInfo.js.map +1 -1
  111. package/dist-cjs/contact-details/MailLinkComponent.js.map +1 -1
  112. package/dist-cjs/contact-details/internal/ContactDetailsContext.js.map +1 -1
  113. package/dist-cjs/contact-details/internal/FavoriteToggle.js.map +1 -1
  114. package/dist-cjs/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  115. package/dist-cjs/contact-details/internal/StarIcon.js.map +1 -1
  116. package/dist-cjs/contact-details/internal/StarIconContainer.js.map +1 -1
  117. package/dist-cjs/contact-details/internal/useComponentSize.js.map +1 -1
  118. package/dist-cjs/content-status/ContentStatus.js.map +1 -1
  119. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  120. package/dist-cjs/date-input/DateInputRange.js +3 -2
  121. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  122. package/dist-cjs/date-input/DateInputSingle.js +5 -2
  123. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  124. package/dist-cjs/date-picker/DatePicker.js +0 -2
  125. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  126. package/dist-cjs/date-picker/DatePickerActions.js +1 -1
  127. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
  128. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  129. package/dist-cjs/date-picker/DatePickerHelperText.js.map +1 -1
  130. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
  131. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
  132. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +2 -3
  133. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  134. package/dist-cjs/date-picker/DatePickerRangeInput.js +22 -8
  135. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  136. package/dist-cjs/date-picker/DatePickerRangePanel.js +2 -4
  137. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
  138. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +2 -4
  139. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  140. package/dist-cjs/date-picker/DatePickerSingleInput.js +12 -7
  141. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  142. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
  143. package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -1
  144. package/dist-cjs/date-picker/useDatePicker.js +0 -17
  145. package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
  146. package/dist-cjs/date-picker/useFocusOut.js.map +1 -1
  147. package/dist-cjs/date-picker/useKeyboard.js.map +1 -1
  148. package/dist-cjs/deck-item/DeckItem.js.map +1 -1
  149. package/dist-cjs/deck-layout/DeckLayout.js.map +1 -1
  150. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  151. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  152. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  153. package/dist-cjs/dropdown/useClickAway.js.map +1 -1
  154. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  155. package/dist-cjs/dropdown/useDropdownBase.js.map +1 -1
  156. package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
  157. package/dist-cjs/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
  158. package/dist-cjs/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
  159. package/dist-cjs/form-field-legacy/FormActivationIndicator.js.map +1 -1
  160. package/dist-cjs/form-field-legacy/FormFieldLegacy.js.map +1 -1
  161. package/dist-cjs/form-field-legacy/FormHelperText.js.map +1 -1
  162. package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
  163. package/dist-cjs/form-field-legacy/NecessityIndicator.js.map +1 -1
  164. package/dist-cjs/form-field-legacy/StatusIndicator.js.map +1 -1
  165. package/dist-cjs/form-field-legacy/constant.js.map +1 -1
  166. package/dist-cjs/form-group/FormGroup.js.map +1 -1
  167. package/dist-cjs/formatted-input/FormattedInput.js.map +1 -1
  168. package/dist-cjs/formatted-input/internal/InputWithMask.js.map +1 -1
  169. package/dist-cjs/index.js +0 -21
  170. package/dist-cjs/index.js.map +1 -1
  171. package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
  172. package/dist-cjs/input-legacy/StaticInputAdornment.js.map +1 -1
  173. package/dist-cjs/input-legacy/useCursorOnFocus.js.map +1 -1
  174. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  175. package/dist-cjs/list/Highlighter.js.map +1 -1
  176. package/dist-cjs/list/List.js.map +1 -1
  177. package/dist-cjs/list/ListItem.js.map +1 -1
  178. package/dist-cjs/list/ListItemGroup.js.map +1 -1
  179. package/dist-cjs/list/ListItemHeader.js.map +1 -1
  180. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  181. package/dist-cjs/list/keyset.js.map +1 -1
  182. package/dist-cjs/list/useList.js.map +1 -1
  183. package/dist-cjs/list/useListHeight.js.map +1 -1
  184. package/dist-cjs/list/useVirtualization.js.map +1 -1
  185. package/dist-cjs/list-deprecated/List.js.map +1 -1
  186. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  187. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  188. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  189. package/dist-cjs/list-deprecated/ListItemContext.js.map +1 -1
  190. package/dist-cjs/list-deprecated/ListStateContext.js.map +1 -1
  191. package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
  192. package/dist-cjs/list-deprecated/internal/Highlighter.js.map +1 -1
  193. package/dist-cjs/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  194. package/dist-cjs/list-deprecated/internal/helpers.js.map +1 -1
  195. package/dist-cjs/list-deprecated/internal/scrollIntoView.js.map +1 -1
  196. package/dist-cjs/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  197. package/dist-cjs/list-deprecated/internal/useWidth.js.map +1 -1
  198. package/dist-cjs/list-deprecated/itemToString.js.map +1 -1
  199. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  200. package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
  201. package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
  202. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  203. package/dist-cjs/list-next/ListNext.js.map +1 -1
  204. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  205. package/dist-cjs/list-next/useList.js.map +1 -1
  206. package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -1
  207. package/dist-cjs/logo/Logo.js.map +1 -1
  208. package/dist-cjs/logo/LogoImage.js.map +1 -1
  209. package/dist-cjs/logo/LogoSeparator.js.map +1 -1
  210. package/dist-cjs/menu-button/MenuButton.js.map +1 -1
  211. package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
  212. package/dist-cjs/metric/Metric.js.map +1 -1
  213. package/dist-cjs/metric/MetricContent.js.map +1 -1
  214. package/dist-cjs/metric/MetricHeader.js.map +1 -1
  215. package/dist-cjs/metric/internal/MetricContext.js.map +1 -1
  216. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  217. package/dist-cjs/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
  218. package/dist-cjs/number-input/internal/useCaret.js.map +1 -1
  219. package/dist-cjs/number-input/internal/useInterval.js.map +1 -1
  220. package/dist-cjs/number-input/internal/utils.js.map +1 -1
  221. package/dist-cjs/number-input/useNumberInput.js.map +1 -1
  222. package/dist-cjs/portal/Portal.js.map +1 -1
  223. package/dist-cjs/query-input/QueryInput.js.map +1 -1
  224. package/dist-cjs/query-input/internal/CategoryList.js.map +1 -1
  225. package/dist-cjs/query-input/internal/CategoryListContext.js.map +1 -1
  226. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  227. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  228. package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
  229. package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
  230. package/dist-cjs/query-input/internal/ValueSelector.js.map +1 -1
  231. package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
  232. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  233. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  234. package/dist-cjs/responsive/overflowUtils.js.map +1 -1
  235. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  236. package/dist-cjs/responsive/useInstantCollapse.js.map +1 -1
  237. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  238. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  239. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  240. package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
  241. package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
  242. package/dist-cjs/responsive/useWidth.js.map +1 -1
  243. package/dist-cjs/responsive/utils.js.map +1 -1
  244. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  245. package/dist-cjs/static-list/StaticList.js.map +1 -1
  246. package/dist-cjs/static-list/StaticListItem.js.map +1 -1
  247. package/dist-cjs/static-list/StaticListItemContent.js.map +1 -1
  248. package/dist-cjs/system-status/SystemStatus.js.map +1 -1
  249. package/dist-cjs/system-status/SystemStatusActions.js.map +1 -1
  250. package/dist-cjs/system-status/SystemStatusContent.js.map +1 -1
  251. package/dist-cjs/table/TBody.js.map +1 -1
  252. package/dist-cjs/table/TD.js +6 -2
  253. package/dist-cjs/table/TD.js.map +1 -1
  254. package/dist-cjs/table/TFoot.js.map +1 -1
  255. package/dist-cjs/table/TH.js +6 -2
  256. package/dist-cjs/table/TH.js.map +1 -1
  257. package/dist-cjs/table/THead.js.map +1 -1
  258. package/dist-cjs/table/TR.js.map +1 -1
  259. package/dist-cjs/table/Table.css.js +1 -1
  260. package/dist-cjs/table/Table.js +2 -2
  261. package/dist-cjs/table/Table.js.map +1 -1
  262. package/dist-cjs/tabs/Tab.js.map +1 -1
  263. package/dist-cjs/tabs/TabActivationIndicator.js.map +1 -1
  264. package/dist-cjs/tabs/TabPanel.js.map +1 -1
  265. package/dist-cjs/tabs/Tabs.js.map +1 -1
  266. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  267. package/dist-cjs/tabs/drag-drop/Draggable.js.map +1 -1
  268. package/dist-cjs/tabs/drag-drop/drag-utils.js.map +1 -1
  269. package/dist-cjs/tabs/drag-drop/dragDropTypes.js.map +1 -1
  270. package/dist-cjs/tabs/drag-drop/useDragDrop.js.map +1 -1
  271. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  272. package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
  273. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  274. package/dist-cjs/tabs/useEditableItem.js.map +1 -1
  275. package/dist-cjs/tabs/useItemsWithIds.js.map +1 -1
  276. package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
  277. package/dist-cjs/tabs/useSelection.js.map +1 -1
  278. package/dist-cjs/tabs/useTabs.js.map +1 -1
  279. package/dist-cjs/tabs/useTabstrip.js.map +1 -1
  280. package/dist-cjs/tabs-next/TabBar.js.map +1 -1
  281. package/dist-cjs/tabs-next/TabListNext.css.js +1 -1
  282. package/dist-cjs/tabs-next/TabListNext.js +3 -3
  283. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  284. package/dist-cjs/tabs-next/TabNext.css.js +1 -1
  285. package/dist-cjs/tabs-next/TabNext.js +0 -1
  286. package/dist-cjs/tabs-next/TabNext.js.map +1 -1
  287. package/dist-cjs/tabs-next/TabNextAction.js.map +1 -1
  288. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -1
  289. package/dist-cjs/tabs-next/TabNextPanel.js.map +1 -1
  290. package/dist-cjs/tabs-next/TabNextTrigger.css.js +1 -1
  291. package/dist-cjs/tabs-next/TabNextTrigger.js +24 -23
  292. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  293. package/dist-cjs/tabs-next/TabOverflowList.css.js +1 -1
  294. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  295. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  296. package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
  297. package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
  298. package/dist-cjs/tabs-next/hooks/useFocusOutside.js.map +1 -1
  299. package/dist-cjs/tabs-next/hooks/useOverflow.js +1 -1
  300. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  301. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js +3 -3
  302. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  303. package/dist-cjs/toast-group/ToastGroup.js.map +1 -1
  304. package/dist-cjs/tokenized-input/TokenizedInput.js.map +1 -1
  305. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  306. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  307. package/dist-cjs/tokenized-input/internal/InputRuler.js.map +1 -1
  308. package/dist-cjs/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  309. package/dist-cjs/tokenized-input/internal/defaultItemToString.js.map +1 -1
  310. package/dist-cjs/tokenized-input/internal/getCursorPosition.js.map +1 -1
  311. package/dist-cjs/tokenized-input/internal/isPlainObject.js.map +1 -1
  312. package/dist-cjs/tokenized-input/internal/useResizeObserver.js.map +1 -1
  313. package/dist-cjs/tokenized-input/internal/useWidth.js.map +1 -1
  314. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  315. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  316. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  317. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  318. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  319. package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -1
  320. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  321. package/dist-cjs/toolbar/Toolbar.js.map +1 -1
  322. package/dist-cjs/toolbar/ToolbarButton.js.map +1 -1
  323. package/dist-cjs/toolbar/Tooltray.js.map +1 -1
  324. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  325. package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
  326. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  327. package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
  328. package/dist-cjs/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  329. package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  330. package/dist-cjs/tree/Tree.js.map +1 -1
  331. package/dist-cjs/tree/TreeNode.js.map +1 -1
  332. package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +1 -1
  333. package/dist-cjs/tree/useTree.js.map +1 -1
  334. package/dist-cjs/utils/escapeRegExp.js.map +1 -1
  335. package/dist-cjs/utils/forwardCallbackProps.js.map +1 -1
  336. package/dist-cjs/utils/isEmail.js.map +1 -1
  337. package/dist-cjs/utils/isPlainObject.js.map +1 -1
  338. package/dist-cjs/utils/partition.js.map +1 -1
  339. package/dist-cjs/utils/useClickOutside.js.map +1 -1
  340. package/dist-cjs/utils/useEventCallback.js.map +1 -1
  341. package/dist-cjs/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  342. package/dist-cjs/utils/useLayoutEffectOnce.js.map +1 -1
  343. package/dist-cjs/utils/useLayoutEffectSkipFirst.js.map +1 -1
  344. package/dist-cjs/utils/useOverflowDetection.js.map +1 -1
  345. package/dist-cjs/utils/useSlideSelection.js.map +1 -1
  346. package/dist-cjs/window/ElectronWindow.js.map +1 -1
  347. package/dist-cjs/window/WindowContext.js.map +1 -1
  348. package/dist-cjs/window/desktop-utils.js.map +1 -1
  349. package/dist-es/app-header/AppHeader.js.map +1 -1
  350. package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
  351. package/dist-es/breadcrumbs/Breadcrumbs.js.map +1 -1
  352. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  353. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  354. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
  355. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
  356. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  357. package/dist-es/button-bar/OrderedButton.js.map +1 -1
  358. package/dist-es/button-bar/internal/ButtonBarContext.js.map +1 -1
  359. package/dist-es/button-bar/internal/DescendantContext.js.map +1 -1
  360. package/dist-es/button-bar/internal/useDescendant.js.map +1 -1
  361. package/dist-es/button-bar/internal/useDescendants.js.map +1 -1
  362. package/dist-es/calendar/Calendar.css.js +1 -1
  363. package/dist-es/calendar/Calendar.js +12 -3
  364. package/dist-es/calendar/Calendar.js.map +1 -1
  365. package/dist-es/calendar/CalendarGrid.js +39 -37
  366. package/dist-es/calendar/CalendarGrid.js.map +1 -1
  367. package/dist-es/calendar/CalendarMonthHeader.js +1 -1
  368. package/dist-es/calendar/CalendarMonthHeader.js.map +1 -1
  369. package/dist-es/calendar/CalendarNavigation.css.js +1 -1
  370. package/dist-es/calendar/CalendarNavigation.js +21 -14
  371. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  372. package/dist-es/calendar/CalendarWeekHeader.css.js +1 -1
  373. package/dist-es/calendar/CalendarWeekHeader.js +2 -2
  374. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  375. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  376. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  377. package/dist-es/calendar/internal/CalendarDay.js +27 -37
  378. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  379. package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
  380. package/dist-es/calendar/internal/CalendarMonth.js +31 -10
  381. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  382. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  383. package/dist-es/calendar/internal/utils.js.map +1 -1
  384. package/dist-es/calendar/useCalendar.js +7 -9
  385. package/dist-es/calendar/useCalendar.js.map +1 -1
  386. package/dist-es/calendar/useCalendarDay.js +7 -11
  387. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  388. package/dist-es/calendar/useCalendarSelection.js +144 -76
  389. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  390. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  391. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  392. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  393. package/dist-es/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
  394. package/dist-es/cascading-menu/internal/keydownHandlers.js.map +1 -1
  395. package/dist-es/cascading-menu/internal/menuPositioning.js.map +1 -1
  396. package/dist-es/cascading-menu/internal/stateUtils.js.map +1 -1
  397. package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
  398. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  399. package/dist-es/cascading-menu/internal/useMountedRef.js.map +1 -1
  400. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  401. package/dist-es/cascading-menu/internal/useRefsManager.js.map +1 -1
  402. package/dist-es/cascading-menu/internal/useStateReducer.js.map +1 -1
  403. package/dist-es/cascading-menu/stateChangeTypes.js.map +1 -1
  404. package/dist-es/color-chooser/AlphaInputField.js.map +1 -1
  405. package/dist-es/color-chooser/Color.js.map +1 -1
  406. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  407. package/dist-es/color-chooser/ColorHelpers.js.map +1 -1
  408. package/dist-es/color-chooser/ColorPicker.js.map +1 -1
  409. package/dist-es/color-chooser/DictTabs.js.map +1 -1
  410. package/dist-es/color-chooser/GetColorPalettes.js.map +1 -1
  411. package/dist-es/color-chooser/HexInput.js.map +1 -1
  412. package/dist-es/color-chooser/RGBAInput.js.map +1 -1
  413. package/dist-es/color-chooser/RGBAInputField.js.map +1 -1
  414. package/dist-es/color-chooser/Swatch.js.map +1 -1
  415. package/dist-es/color-chooser/Swatches.js.map +1 -1
  416. package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
  417. package/dist-es/color-chooser/color-utils.js.map +1 -1
  418. package/dist-es/color-chooser/colorMap.js.map +1 -1
  419. package/dist-es/color-chooser/createTabsMapping.js.map +1 -1
  420. package/dist-es/combo-box/ComboBox.js.map +1 -1
  421. package/dist-es/combo-box/useCombobox.js.map +1 -1
  422. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  423. package/dist-es/combo-box-deprecated/filterHelpers.js.map +1 -1
  424. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  425. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  426. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  427. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  428. package/dist-es/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  429. package/dist-es/common-hooks/calcPreferredHeight.js.map +1 -1
  430. package/dist-es/common-hooks/collectionProvider.js.map +1 -1
  431. package/dist-es/common-hooks/itemToString.js.map +1 -1
  432. package/dist-es/common-hooks/keyUtils.js.map +1 -1
  433. package/dist-es/common-hooks/list-dom-utils.js.map +1 -1
  434. package/dist-es/common-hooks/selectionTypes.js.map +1 -1
  435. package/dist-es/common-hooks/useAutoSizer.js.map +1 -1
  436. package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
  437. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  438. package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  439. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  440. package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  441. package/dist-es/common-hooks/useSelection.js.map +1 -1
  442. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  443. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  444. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  445. package/dist-es/common-hooks/utils/filter-utils.js.map +1 -1
  446. package/dist-es/common-hooks/utils/isSelected.js.map +1 -1
  447. package/dist-es/contact-details/ContactAction.js.map +1 -1
  448. package/dist-es/contact-details/ContactActions.js.map +1 -1
  449. package/dist-es/contact-details/ContactAvatar.js.map +1 -1
  450. package/dist-es/contact-details/ContactDetails.js.map +1 -1
  451. package/dist-es/contact-details/ContactFavoriteToggle.js.map +1 -1
  452. package/dist-es/contact-details/ContactMetadata.js.map +1 -1
  453. package/dist-es/contact-details/ContactMetadataItem.js.map +1 -1
  454. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  455. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  456. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  457. package/dist-es/contact-details/MailLinkComponent.js.map +1 -1
  458. package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
  459. package/dist-es/contact-details/internal/FavoriteToggle.js.map +1 -1
  460. package/dist-es/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  461. package/dist-es/contact-details/internal/StarIcon.js.map +1 -1
  462. package/dist-es/contact-details/internal/StarIconContainer.js.map +1 -1
  463. package/dist-es/contact-details/internal/useComponentSize.js.map +1 -1
  464. package/dist-es/content-status/ContentStatus.js.map +1 -1
  465. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  466. package/dist-es/date-input/DateInputRange.js +3 -2
  467. package/dist-es/date-input/DateInputRange.js.map +1 -1
  468. package/dist-es/date-input/DateInputSingle.js +5 -2
  469. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  470. package/dist-es/date-picker/DatePicker.js +0 -2
  471. package/dist-es/date-picker/DatePicker.js.map +1 -1
  472. package/dist-es/date-picker/DatePickerActions.js +1 -1
  473. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  474. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  475. package/dist-es/date-picker/DatePickerHelperText.js.map +1 -1
  476. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  477. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  478. package/dist-es/date-picker/DatePickerRangeGridPanel.js +2 -3
  479. package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  480. package/dist-es/date-picker/DatePickerRangeInput.js +22 -8
  481. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  482. package/dist-es/date-picker/DatePickerRangePanel.js +2 -4
  483. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  484. package/dist-es/date-picker/DatePickerSingleGridPanel.js +2 -4
  485. package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  486. package/dist-es/date-picker/DatePickerSingleInput.js +12 -7
  487. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  488. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  489. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
  490. package/dist-es/date-picker/useDatePicker.js +0 -17
  491. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  492. package/dist-es/date-picker/useFocusOut.js.map +1 -1
  493. package/dist-es/date-picker/useKeyboard.js.map +1 -1
  494. package/dist-es/deck-item/DeckItem.js.map +1 -1
  495. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  496. package/dist-es/dropdown/Dropdown.js.map +1 -1
  497. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  498. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  499. package/dist-es/dropdown/useClickAway.js.map +1 -1
  500. package/dist-es/dropdown/useDropdown.js.map +1 -1
  501. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  502. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  503. package/dist-es/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
  504. package/dist-es/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
  505. package/dist-es/form-field-legacy/FormActivationIndicator.js.map +1 -1
  506. package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
  507. package/dist-es/form-field-legacy/FormHelperText.js.map +1 -1
  508. package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
  509. package/dist-es/form-field-legacy/NecessityIndicator.js.map +1 -1
  510. package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
  511. package/dist-es/form-field-legacy/constant.js.map +1 -1
  512. package/dist-es/form-group/FormGroup.js.map +1 -1
  513. package/dist-es/formatted-input/FormattedInput.js.map +1 -1
  514. package/dist-es/formatted-input/internal/InputWithMask.js.map +1 -1
  515. package/dist-es/index.js +0 -10
  516. package/dist-es/index.js.map +1 -1
  517. package/dist-es/input-legacy/InputLegacy.js.map +1 -1
  518. package/dist-es/input-legacy/StaticInputAdornment.js.map +1 -1
  519. package/dist-es/input-legacy/useCursorOnFocus.js.map +1 -1
  520. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  521. package/dist-es/list/Highlighter.js.map +1 -1
  522. package/dist-es/list/List.js.map +1 -1
  523. package/dist-es/list/ListItem.js.map +1 -1
  524. package/dist-es/list/ListItemGroup.js.map +1 -1
  525. package/dist-es/list/ListItemHeader.js.map +1 -1
  526. package/dist-es/list/VirtualizedList.js.map +1 -1
  527. package/dist-es/list/keyset.js.map +1 -1
  528. package/dist-es/list/useList.js.map +1 -1
  529. package/dist-es/list/useListHeight.js.map +1 -1
  530. package/dist-es/list/useVirtualization.js.map +1 -1
  531. package/dist-es/list-deprecated/List.js.map +1 -1
  532. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  533. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  534. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  535. package/dist-es/list-deprecated/ListItemContext.js.map +1 -1
  536. package/dist-es/list-deprecated/ListStateContext.js.map +1 -1
  537. package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
  538. package/dist-es/list-deprecated/internal/Highlighter.js.map +1 -1
  539. package/dist-es/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  540. package/dist-es/list-deprecated/internal/helpers.js.map +1 -1
  541. package/dist-es/list-deprecated/internal/scrollIntoView.js.map +1 -1
  542. package/dist-es/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  543. package/dist-es/list-deprecated/internal/useWidth.js.map +1 -1
  544. package/dist-es/list-deprecated/itemToString.js.map +1 -1
  545. package/dist-es/list-deprecated/useList.js.map +1 -1
  546. package/dist-es/list-deprecated/useListItem.js.map +1 -1
  547. package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
  548. package/dist-es/list-next/ListItemNext.js.map +1 -1
  549. package/dist-es/list-next/ListNext.js.map +1 -1
  550. package/dist-es/list-next/ListNextContext.js.map +1 -1
  551. package/dist-es/list-next/useList.js.map +1 -1
  552. package/dist-es/localization-provider/LocalizationProvider.js.map +1 -1
  553. package/dist-es/logo/Logo.js.map +1 -1
  554. package/dist-es/logo/LogoImage.js.map +1 -1
  555. package/dist-es/logo/LogoSeparator.js.map +1 -1
  556. package/dist-es/menu-button/MenuButton.js.map +1 -1
  557. package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
  558. package/dist-es/metric/Metric.js.map +1 -1
  559. package/dist-es/metric/MetricContent.js.map +1 -1
  560. package/dist-es/metric/MetricHeader.js.map +1 -1
  561. package/dist-es/metric/internal/MetricContext.js.map +1 -1
  562. package/dist-es/number-input/NumberInput.js.map +1 -1
  563. package/dist-es/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
  564. package/dist-es/number-input/internal/useCaret.js.map +1 -1
  565. package/dist-es/number-input/internal/useInterval.js.map +1 -1
  566. package/dist-es/number-input/internal/utils.js.map +1 -1
  567. package/dist-es/number-input/useNumberInput.js.map +1 -1
  568. package/dist-es/portal/Portal.js.map +1 -1
  569. package/dist-es/query-input/QueryInput.js.map +1 -1
  570. package/dist-es/query-input/internal/CategoryList.js.map +1 -1
  571. package/dist-es/query-input/internal/CategoryListContext.js.map +1 -1
  572. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  573. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  574. package/dist-es/query-input/internal/SearchList.js.map +1 -1
  575. package/dist-es/query-input/internal/ValueList.js.map +1 -1
  576. package/dist-es/query-input/internal/ValueSelector.js.map +1 -1
  577. package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
  578. package/dist-es/query-input/useQueryInput.js.map +1 -1
  579. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  580. package/dist-es/responsive/overflowUtils.js.map +1 -1
  581. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  582. package/dist-es/responsive/useInstantCollapse.js.map +1 -1
  583. package/dist-es/responsive/useOverflow.js.map +1 -1
  584. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  585. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  586. package/dist-es/responsive/useReclaimSpace.js.map +1 -1
  587. package/dist-es/responsive/useResizeObserver.js.map +1 -1
  588. package/dist-es/responsive/useWidth.js.map +1 -1
  589. package/dist-es/responsive/utils.js.map +1 -1
  590. package/dist-es/search-input/SearchInput.js.map +1 -1
  591. package/dist-es/static-list/StaticList.js.map +1 -1
  592. package/dist-es/static-list/StaticListItem.js.map +1 -1
  593. package/dist-es/static-list/StaticListItemContent.js.map +1 -1
  594. package/dist-es/system-status/SystemStatus.js.map +1 -1
  595. package/dist-es/system-status/SystemStatusActions.js.map +1 -1
  596. package/dist-es/system-status/SystemStatusContent.js.map +1 -1
  597. package/dist-es/table/TBody.js.map +1 -1
  598. package/dist-es/table/TD.js +6 -2
  599. package/dist-es/table/TD.js.map +1 -1
  600. package/dist-es/table/TFoot.js.map +1 -1
  601. package/dist-es/table/TH.js +6 -2
  602. package/dist-es/table/TH.js.map +1 -1
  603. package/dist-es/table/THead.js.map +1 -1
  604. package/dist-es/table/TR.js.map +1 -1
  605. package/dist-es/table/Table.css.js +1 -1
  606. package/dist-es/table/Table.js +2 -2
  607. package/dist-es/table/Table.js.map +1 -1
  608. package/dist-es/tabs/Tab.js.map +1 -1
  609. package/dist-es/tabs/TabActivationIndicator.js.map +1 -1
  610. package/dist-es/tabs/TabPanel.js.map +1 -1
  611. package/dist-es/tabs/Tabs.js.map +1 -1
  612. package/dist-es/tabs/Tabstrip.js.map +1 -1
  613. package/dist-es/tabs/drag-drop/Draggable.js.map +1 -1
  614. package/dist-es/tabs/drag-drop/drag-utils.js.map +1 -1
  615. package/dist-es/tabs/drag-drop/dragDropTypes.js.map +1 -1
  616. package/dist-es/tabs/drag-drop/useDragDrop.js.map +1 -1
  617. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  618. package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
  619. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  620. package/dist-es/tabs/useEditableItem.js.map +1 -1
  621. package/dist-es/tabs/useItemsWithIds.js.map +1 -1
  622. package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
  623. package/dist-es/tabs/useSelection.js.map +1 -1
  624. package/dist-es/tabs/useTabs.js.map +1 -1
  625. package/dist-es/tabs/useTabstrip.js.map +1 -1
  626. package/dist-es/tabs-next/TabBar.js.map +1 -1
  627. package/dist-es/tabs-next/TabListNext.css.js +1 -1
  628. package/dist-es/tabs-next/TabListNext.js +3 -3
  629. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  630. package/dist-es/tabs-next/TabNext.css.js +1 -1
  631. package/dist-es/tabs-next/TabNext.js +0 -1
  632. package/dist-es/tabs-next/TabNext.js.map +1 -1
  633. package/dist-es/tabs-next/TabNextAction.js.map +1 -1
  634. package/dist-es/tabs-next/TabNextContext.js.map +1 -1
  635. package/dist-es/tabs-next/TabNextPanel.js.map +1 -1
  636. package/dist-es/tabs-next/TabNextTrigger.css.js +1 -1
  637. package/dist-es/tabs-next/TabNextTrigger.js +24 -23
  638. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  639. package/dist-es/tabs-next/TabOverflowList.css.js +1 -1
  640. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  641. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  642. package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
  643. package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
  644. package/dist-es/tabs-next/hooks/useFocusOutside.js.map +1 -1
  645. package/dist-es/tabs-next/hooks/useOverflow.js +1 -1
  646. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  647. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js +3 -3
  648. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  649. package/dist-es/toast-group/ToastGroup.js.map +1 -1
  650. package/dist-es/tokenized-input/TokenizedInput.js.map +1 -1
  651. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  652. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  653. package/dist-es/tokenized-input/internal/InputRuler.js.map +1 -1
  654. package/dist-es/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  655. package/dist-es/tokenized-input/internal/defaultItemToString.js.map +1 -1
  656. package/dist-es/tokenized-input/internal/getCursorPosition.js.map +1 -1
  657. package/dist-es/tokenized-input/internal/isPlainObject.js.map +1 -1
  658. package/dist-es/tokenized-input/internal/useResizeObserver.js.map +1 -1
  659. package/dist-es/tokenized-input/internal/useWidth.js.map +1 -1
  660. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  661. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  662. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  663. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  664. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  665. package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -1
  666. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  667. package/dist-es/toolbar/Toolbar.js.map +1 -1
  668. package/dist-es/toolbar/ToolbarButton.js.map +1 -1
  669. package/dist-es/toolbar/Tooltray.js.map +1 -1
  670. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  671. package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
  672. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  673. package/dist-es/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
  674. package/dist-es/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  675. package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  676. package/dist-es/tree/Tree.js.map +1 -1
  677. package/dist-es/tree/TreeNode.js.map +1 -1
  678. package/dist-es/tree/use-tree-keyboard-navigation.js.map +1 -1
  679. package/dist-es/tree/useTree.js.map +1 -1
  680. package/dist-es/utils/escapeRegExp.js.map +1 -1
  681. package/dist-es/utils/forwardCallbackProps.js.map +1 -1
  682. package/dist-es/utils/isEmail.js.map +1 -1
  683. package/dist-es/utils/isPlainObject.js.map +1 -1
  684. package/dist-es/utils/partition.js.map +1 -1
  685. package/dist-es/utils/useClickOutside.js.map +1 -1
  686. package/dist-es/utils/useEventCallback.js.map +1 -1
  687. package/dist-es/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  688. package/dist-es/utils/useLayoutEffectOnce.js.map +1 -1
  689. package/dist-es/utils/useLayoutEffectSkipFirst.js.map +1 -1
  690. package/dist-es/utils/useOverflowDetection.js.map +1 -1
  691. package/dist-es/utils/useSlideSelection.js.map +1 -1
  692. package/dist-es/window/ElectronWindow.js.map +1 -1
  693. package/dist-es/window/WindowContext.js.map +1 -1
  694. package/dist-es/window/desktop-utils.js.map +1 -1
  695. package/dist-types/calendar/useCalendar.d.ts +26 -25
  696. package/dist-types/calendar/useCalendarDay.d.ts +1 -5
  697. package/dist-types/calendar/useCalendarSelection.d.ts +14 -11
  698. package/dist-types/date-picker/DatePickerContext.d.ts +0 -6
  699. package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +2 -2
  700. package/dist-types/date-picker/DatePickerRangePanel.d.ts +4 -4
  701. package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +2 -2
  702. package/dist-types/date-picker/useDatePicker.d.ts +0 -6
  703. package/dist-types/index.d.ts +0 -2
  704. package/dist-types/table/TD.d.ts +6 -0
  705. package/dist-types/table/TH.d.ts +6 -0
  706. package/dist-types/table/Table.d.ts +3 -3
  707. package/dist-types/tabs-next/TabNextTrigger.d.ts +1 -1
  708. package/package.json +2 -2
  709. package/dist-cjs/collapsible/Collapsible.js +0 -47
  710. package/dist-cjs/collapsible/Collapsible.js.map +0 -1
  711. package/dist-cjs/collapsible/CollapsibleContext.js +0 -23
  712. package/dist-cjs/collapsible/CollapsibleContext.js.map +0 -1
  713. package/dist-cjs/collapsible/CollapsiblePanel.css.js +0 -6
  714. package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +0 -1
  715. package/dist-cjs/collapsible/CollapsiblePanel.js +0 -42
  716. package/dist-cjs/collapsible/CollapsiblePanel.js.map +0 -1
  717. package/dist-cjs/collapsible/CollapsibleTrigger.js +0 -35
  718. package/dist-cjs/collapsible/CollapsibleTrigger.js.map +0 -1
  719. package/dist-cjs/vertical-navigation/SubMenuContext.js +0 -34
  720. package/dist-cjs/vertical-navigation/SubMenuContext.js.map +0 -1
  721. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +0 -6
  722. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +0 -1
  723. package/dist-cjs/vertical-navigation/VerticalNavigation.js +0 -34
  724. package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +0 -1
  725. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +0 -48
  726. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +0 -1
  727. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +0 -6
  728. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +0 -1
  729. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +0 -83
  730. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +0 -1
  731. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +0 -29
  732. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +0 -1
  733. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +0 -6
  734. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +0 -1
  735. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +0 -24
  736. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +0 -1
  737. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +0 -6
  738. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +0 -1
  739. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +0 -69
  740. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +0 -1
  741. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +0 -6
  742. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +0 -1
  743. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +0 -35
  744. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +0 -1
  745. package/dist-es/collapsible/Collapsible.js +0 -45
  746. package/dist-es/collapsible/Collapsible.js.map +0 -1
  747. package/dist-es/collapsible/CollapsibleContext.js +0 -20
  748. package/dist-es/collapsible/CollapsibleContext.js.map +0 -1
  749. package/dist-es/collapsible/CollapsiblePanel.css.js +0 -4
  750. package/dist-es/collapsible/CollapsiblePanel.css.js.map +0 -1
  751. package/dist-es/collapsible/CollapsiblePanel.js +0 -40
  752. package/dist-es/collapsible/CollapsiblePanel.js.map +0 -1
  753. package/dist-es/collapsible/CollapsibleTrigger.js +0 -33
  754. package/dist-es/collapsible/CollapsibleTrigger.js.map +0 -1
  755. package/dist-es/vertical-navigation/SubMenuContext.js +0 -30
  756. package/dist-es/vertical-navigation/SubMenuContext.js.map +0 -1
  757. package/dist-es/vertical-navigation/VerticalNavigation.css.js +0 -4
  758. package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +0 -1
  759. package/dist-es/vertical-navigation/VerticalNavigation.js +0 -32
  760. package/dist-es/vertical-navigation/VerticalNavigation.js.map +0 -1
  761. package/dist-es/vertical-navigation/VerticalNavigationItem.js +0 -45
  762. package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +0 -1
  763. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +0 -4
  764. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +0 -1
  765. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +0 -81
  766. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +0 -1
  767. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +0 -27
  768. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +0 -1
  769. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +0 -4
  770. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +0 -1
  771. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +0 -22
  772. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +0 -1
  773. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +0 -4
  774. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +0 -1
  775. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +0 -67
  776. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +0 -1
  777. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +0 -4
  778. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +0 -1
  779. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +0 -33
  780. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +0 -1
  781. package/dist-types/collapsible/Collapsible.d.ts +0 -16
  782. package/dist-types/collapsible/CollapsibleContext.d.ts +0 -9
  783. package/dist-types/collapsible/CollapsiblePanel.d.ts +0 -4
  784. package/dist-types/collapsible/CollapsibleTrigger.d.ts +0 -5
  785. package/dist-types/collapsible/index.d.ts +0 -3
  786. package/dist-types/vertical-navigation/SubMenuContext.d.ts +0 -14
  787. package/dist-types/vertical-navigation/VerticalNavigation.d.ts +0 -5
  788. package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +0 -12
  789. package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +0 -4
  790. package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +0 -2
  791. package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +0 -4
  792. package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +0 -6
  793. package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +0 -4
  794. package/dist-types/vertical-navigation/index.d.ts +0 -7
@@ -189,24 +189,13 @@ function useCalendarSelection(props) {
189
189
  if (!selectedDate) {
190
190
  return false;
191
191
  }
192
- const isSingleDateSelected = (element) => dateAdapter.isSame(element, date, "day");
193
- const isDateRangeSelected = (range) => range.startDate && range.endDate && dateAdapter.compare(date, range.startDate) >= 0 && dateAdapter.compare(date, range.endDate) <= 0;
194
- if (Array.isArray(selectedDate)) {
195
- return selectedDate.some(
196
- (element) => isDateRangeSelection(element) ? isDateRangeSelected(element) : isSingleDateSelected(element)
192
+ if (selectionVariant === "single") {
193
+ const singleDates = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
194
+ return singleDates.some(
195
+ (singleDate) => dateAdapter.isSame(singleDate, date, "day")
197
196
  );
198
197
  }
199
- switch (selectionVariant) {
200
- case "single":
201
- return isSingleDateSelected(
202
- selectedDate
203
- );
204
- case "range":
205
- case "offset":
206
- return isDateRangeSelected(selectedDate);
207
- default:
208
- return false;
209
- }
198
+ return false;
210
199
  },
211
200
  [dateAdapter, selectedDate, selectionVariant]
212
201
  );
@@ -344,29 +333,56 @@ function useCalendarSelection(props) {
344
333
  timezone,
345
334
  visibleMonth
346
335
  ]);
347
- const isSelectedSpan = react.useCallback(
336
+ const isHoveredStart = react.useCallback(
348
337
  (date) => {
349
- const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
350
- return dateRanges.some((range) => {
351
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.startDate) && !isOutsideAllowedDates(range.endDate)) {
352
- return dateAdapter.compare(date, range.startDate) > 0 && dateAdapter.compare(date, range.endDate) < 0;
353
- }
354
- return false;
355
- });
338
+ if (selectionVariant === "range" && hoveredDate && dateAdapter.isSame(date, hoveredDate, "day")) {
339
+ const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
340
+ const allDatesPopulated = dateRanges.every(
341
+ (range) => (range == null ? void 0 : range.startDate) && (range == null ? void 0 : range.endDate)
342
+ );
343
+ const startDateMatches = dateRanges.some(
344
+ (range) => (range == null ? void 0 : range.startDate) && dateAdapter.isSame(date, range.startDate, "day")
345
+ );
346
+ const firstIncompleteRange = dateRanges.find(
347
+ (range) => (range == null ? void 0 : range.startDate) && !(range == null ? void 0 : range.endDate)
348
+ );
349
+ const newDateRangeRequired = (firstIncompleteRange == null ? void 0 : firstIncompleteRange.startDate) && dateAdapter.compare(date, firstIncompleteRange.startDate) < 0;
350
+ return allDatesPopulated || startDateMatches || newDateRangeRequired;
351
+ }
352
+ if (selectionVariant === "offset" && hoveredDate) {
353
+ const startDate = getStartDateOffset(hoveredDate);
354
+ return dateAdapter.isSame(date, startDate, "day") && (!isDaySelectable || isDaySelectable(date));
355
+ }
356
+ return false;
356
357
  },
357
- [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
358
+ [
359
+ dateAdapter,
360
+ getStartDateOffset,
361
+ selectionVariant,
362
+ selectedDate,
363
+ hoveredDate,
364
+ isDaySelectable
365
+ ]
358
366
  );
359
367
  const isHoveredSpan = react.useCallback(
360
368
  (date) => {
361
- const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
362
- return dateRanges.some((range) => {
363
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && !dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.startDate) && hoveredDate) {
364
- const isForwardRange = dateAdapter.compare(hoveredDate, range.startDate) >= 0 && (dateAdapter.compare(date, range.startDate) >= 0 && dateAdapter.compare(date, hoveredDate) <= 0 || dateAdapter.isSame(date, hoveredDate, "day"));
365
- const isValidDayHovered = !isDaySelectable || isDaySelectable(hoveredDate);
366
- return isForwardRange && isValidDayHovered;
367
- }
368
- return false;
369
- });
369
+ if (selectionVariant === "range") {
370
+ const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
371
+ return dateRanges.some((range) => {
372
+ if (isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && !dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.startDate) && hoveredDate) {
373
+ const isForwardRange = dateAdapter.compare(hoveredDate, range.startDate) > 0 && dateAdapter.compare(date, range.startDate) > 0 && dateAdapter.compare(date, hoveredDate) < 0;
374
+ const isValidDayHovered = !isDaySelectable || isDaySelectable(hoveredDate);
375
+ return isForwardRange && isValidDayHovered;
376
+ }
377
+ return false;
378
+ });
379
+ }
380
+ if (selectionVariant === "offset" && hoveredDate) {
381
+ const startDate = getStartDateOffset(hoveredDate);
382
+ const endDate = getEndDateOffset(hoveredDate);
383
+ return dateAdapter.compare(date, startDate) > 0 && dateAdapter.compare(date, endDate) < 0 && (!isDaySelectable || isDaySelectable(date));
384
+ }
385
+ return false;
370
386
  },
371
387
  [
372
388
  dateAdapter,
@@ -377,8 +393,50 @@ function useCalendarSelection(props) {
377
393
  isDaySelectable
378
394
  ]
379
395
  );
396
+ const isHoveredEnd = react.useCallback(
397
+ (date) => {
398
+ if (selectionVariant === "range" && hoveredDate && dateAdapter.isSame(date, hoveredDate, "day")) {
399
+ const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
400
+ const isIncompleteRange = dateRanges.some(
401
+ (range) => (range == null ? void 0 : range.startDate) && !(range == null ? void 0 : range.endDate) && hoveredDate && dateAdapter.compare(hoveredDate, range.startDate) >= 0
402
+ );
403
+ const endDateMatches = dateRanges.some(
404
+ (range) => (range == null ? void 0 : range.endDate) && dateAdapter.isSame(range.endDate, date, "day")
405
+ );
406
+ return endDateMatches || isIncompleteRange;
407
+ }
408
+ if (selectionVariant === "offset" && hoveredDate) {
409
+ const endDate = getEndDateOffset(hoveredDate);
410
+ return dateAdapter.isSame(date, endDate, "day") && (!isDaySelectable || isDaySelectable(date));
411
+ }
412
+ return false;
413
+ },
414
+ [
415
+ dateAdapter,
416
+ getEndDateOffset,
417
+ selectionVariant,
418
+ selectedDate,
419
+ hoveredDate,
420
+ isDaySelectable
421
+ ]
422
+ );
423
+ const isSameDay = react.useCallback(
424
+ (date) => {
425
+ const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
426
+ return dateRanges.some((range) => {
427
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && (range == null ? void 0 : range.startDate) && (range == null ? void 0 : range.endDate) && dateAdapter.isSame(range == null ? void 0 : range.startDate, date, "day")) {
428
+ return dateAdapter.isSame(range == null ? void 0 : range.startDate, range == null ? void 0 : range.endDate, "day");
429
+ }
430
+ return false;
431
+ });
432
+ },
433
+ [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
434
+ );
380
435
  const isSelectedStart = react.useCallback(
381
436
  (date) => {
437
+ if (selectionVariant === "single") {
438
+ return false;
439
+ }
382
440
  const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
383
441
  return dateRanges.some((range) => {
384
442
  if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && !isOutsideAllowedDates(range.startDate)) {
@@ -389,35 +447,35 @@ function useCalendarSelection(props) {
389
447
  },
390
448
  [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
391
449
  );
392
- const isSelectedEnd = react.useCallback(
450
+ const isSelectedSpan = react.useCallback(
393
451
  (date) => {
452
+ if (selectionVariant === "single") {
453
+ return false;
454
+ }
394
455
  const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
395
456
  return dateRanges.some((range) => {
396
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.endDate)) {
397
- return dateAdapter.isSame(range.endDate, date, "day");
457
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.startDate) && !isOutsideAllowedDates(range.endDate)) {
458
+ return dateAdapter.compare(date, range.startDate) > 0 && dateAdapter.compare(date, range.endDate) < 0;
398
459
  }
399
460
  return false;
400
461
  });
401
462
  },
402
463
  [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
403
464
  );
404
- const isHoveredOffset = react.useCallback(
465
+ const isSelectedEnd = react.useCallback(
405
466
  (date) => {
406
- if (hoveredDate && selectionVariant === "offset") {
407
- const startDate = getStartDateOffset(hoveredDate);
408
- const endDate = getEndDateOffset(hoveredDate);
409
- return dateAdapter.compare(date, startDate) >= 0 && dateAdapter.compare(date, endDate) <= 0 && (!isDaySelectable || isDaySelectable(date));
467
+ if (selectionVariant === "single") {
468
+ return false;
410
469
  }
411
- return false;
470
+ const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
471
+ return dateRanges.some((range) => {
472
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.endDate)) {
473
+ return dateAdapter.isSame(range.endDate, date, "day");
474
+ }
475
+ return false;
476
+ });
412
477
  },
413
- [
414
- dateAdapter,
415
- getStartDateOffset,
416
- getEndDateOffset,
417
- hoveredDate,
418
- isDaySelectable,
419
- selectionVariant
420
- ]
478
+ [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
421
479
  );
422
480
  return react.useMemo(
423
481
  () => ({
@@ -429,15 +487,17 @@ function useCalendarSelection(props) {
429
487
  focusableDates: getFocusableDates()
430
488
  },
431
489
  helpers: {
432
- isSelected,
433
- setSelectedDate,
434
490
  isHovered,
491
+ isSelected,
435
492
  setHoveredDate,
436
- isSelectedSpan,
437
- isHoveredSpan,
493
+ isSameDay,
494
+ setSelectedDate,
438
495
  isSelectedStart,
496
+ isSelectedSpan,
439
497
  isSelectedEnd,
440
- isHoveredOffset,
498
+ isHoveredStart,
499
+ isHoveredSpan,
500
+ isHoveredEnd,
441
501
  isDaySelectable,
442
502
  setFocusedDate
443
503
  }
@@ -449,12 +509,13 @@ function useCalendarSelection(props) {
449
509
  getFocusableDates,
450
510
  hoveredDate,
451
511
  isSelected,
452
- isHovered,
453
- isSelectedSpan,
512
+ isHoveredStart,
454
513
  isHoveredSpan,
514
+ isHoveredEnd,
515
+ isSameDay,
455
516
  isSelectedStart,
517
+ isSelectedSpan,
456
518
  isSelectedEnd,
457
- isHoveredOffset,
458
519
  isDaySelectable,
459
520
  setFocusedDate,
460
521
  setHoveredDate,
@@ -466,15 +527,18 @@ function useCalendarSelectionDay({
466
527
  date
467
528
  }) {
468
529
  const {
530
+ state: { selectionVariant },
469
531
  helpers: {
470
532
  setSelectedDate,
533
+ isSameDay,
471
534
  isSelected,
472
- isSelectedSpan,
473
- isHoveredSpan,
474
535
  isSelectedStart,
536
+ isSelectedSpan,
475
537
  isSelectedEnd,
476
538
  isHovered,
477
- isHoveredOffset,
539
+ isHoveredStart,
540
+ isHoveredSpan,
541
+ isHoveredEnd,
478
542
  isDaySelectable
479
543
  }
480
544
  } = CalendarContext.useCalendarContext();
@@ -496,33 +560,37 @@ function useCalendarSelectionDay({
496
560
  [date, setSelectedDate]
497
561
  );
498
562
  const selected = isSelected(date);
499
- const selectedSpan = isSelectedSpan(date);
500
- const hoveredSpan = isHoveredSpan(date);
501
563
  const selectedStart = isSelectedStart(date);
564
+ const selectedSpan = isSelectedSpan(date);
502
565
  const selectedEnd = isSelectedEnd(date);
566
+ const selectedOnSameDay = isSameDay(date);
503
567
  const hovered = isHovered(date);
504
- const hoveredOffset = isHoveredOffset(date);
568
+ const hoveredStart = isHoveredStart(date);
569
+ const hoveredSpan = isHoveredSpan(date);
570
+ const hoveredEnd = isHoveredEnd(date);
505
571
  return {
506
572
  handleClick,
507
573
  handleKeyDown,
508
574
  status: {
575
+ hovered,
509
576
  selected,
510
- selectedSpan,
511
- hoveredSpan,
512
577
  selectedStart,
578
+ selectedSpan,
513
579
  selectedEnd,
514
- hovered,
515
- hoveredOffset
580
+ hoveredStart,
581
+ hoveredSpan,
582
+ hoveredEnd
516
583
  },
517
584
  dayProps: {
518
585
  className: clsx.clsx({
519
- [withBaseName("selected")]: selected,
520
- [withBaseName("selectedSpan")]: selectedSpan,
521
- [withBaseName("hoveredSpan")]: hoveredSpan,
522
- [withBaseName("selectedStart")]: selectedStart,
523
- [withBaseName("selectedEnd")]: selectedEnd,
524
- [withBaseName("hovered")]: hovered,
525
- [withBaseName("hoveredOffset")]: hoveredOffset
586
+ [withBaseName("selected")]: selectionVariant === "single" ? selected : void 0,
587
+ [withBaseName("selectedStart")]: selectionVariant !== "single" ? selectedStart : void 0,
588
+ [withBaseName("selectedSpan")]: selectionVariant !== "single" ? selectedSpan : void 0,
589
+ [withBaseName("selectedEnd")]: selectionVariant !== "single" ? selectedEnd : void 0,
590
+ [withBaseName("selectedSameDay")]: selectionVariant !== "single" && selectedOnSameDay,
591
+ [withBaseName("hoveredStart")]: selectionVariant !== "single" && hoveredStart,
592
+ [withBaseName("hoveredSpan")]: selectionVariant !== "single" && hoveredSpan,
593
+ [withBaseName("hoveredEnd")]: selectionVariant !== "single" && hoveredEnd
526
594
  }),
527
595
  "aria-pressed": selected || selectedEnd || selectedStart || selectedSpan ? "true" : void 0,
528
596
  "aria-disabled": isDaySelectable && !isDaySelectable(date) ? "true" : void 0
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendarSelection.js","sources":["../src/calendar/useCalendarSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { generateDatesForMonth } from \"./internal/utils\";\n\n/**\n * Type representing a single date selection.\n * @template TDate - The type of the date object.\n */\nexport type SingleDateSelection<TDate extends DateFrameworkType> = TDate;\n\n/**\n * Type representing a date range selection.\n * @template TDate - The type of the date object.\n */\nexport type DateRangeSelection<TDate extends DateFrameworkType> = {\n /**\n * The start date of the range.\n */\n startDate?: TDate | null;\n /**\n * The end date of the range.\n */\n endDate?: TDate | null;\n};\n\n/**\n * Checks if a value is a date range selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a date range selection, otherwise `false`.\n */\nexport function isDateRangeSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: date framework dependent\n value: any,\n): value is DateRangeSelection<TDate> {\n return (\n value &&\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n (\"startDate\" in value || \"endDate\" in value)\n );\n}\n\n/**\n * Base properties for calendar UseCalendarSelection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionBaseProps<\n TDate extends DateFrameworkType,\n> {\n /**\n * The currently focused date in the calendar, or null if no date is focused.\n */\n focusedDate?: TDate | null;\n /**\n * The currently hovered date.\n */\n hoveredDate?: TDate | null;\n /**\n * Determines if a date is outside the allowed date range.\n * @param date - The date to check.\n * @returns `true` if the date is outside the allowed range, otherwise `false`.\n */\n isOutsideAllowedDates?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is selectable.\n * @param date - The date to check.\n * @returns `true` if the day is selectable, otherwise `false`.\n */\n isDaySelectable?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is visible.\n * @param date - The date to check.\n * @returns `true` if the day is visible, otherwise `false`.\n */\n isDayVisible?: (date: TDate) => boolean;\n /**\n * Ref to attach to the focused element, enabling focus to be controlled.\n */\n focusedDateRef?: React.MutableRefObject<HTMLElement | null>;\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event, if user event triggered focus or null.\n * @param date - The new focused date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n date: TDate | null,\n ) => void;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: TDate | null,\n ) => void;\n /**\n * Specifies the timezone behavior:\n * - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate`.\n * - If set to \"default\", the default timezone of the date library will be used.\n * - If set to \"system\", the local system's timezone will be applied.\n * - If set to \"UTC\", the time will be returned in UTC.\n * - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.\n */\n timezone?: Timezone;\n /**\n * The currently visible month.\n */\n visibleMonth?: TDate;\n /**\n * If `true`, the calendar will be multiselect.\n */\n multiselect?: boolean;\n}\n\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * The currently selected date.\n */\n selectedDate?: SingleDateSelection<TDate> | null;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: SingleDateSelection<TDate> | null;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: SingleDateSelection<TDate> | null,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: SingleDateSelection<TDate> | null,\n newDate: SingleDateSelection<TDate> | null,\n ) => SingleDateSelection<TDate> | null;\n}\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<SingleDateSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n @param newDate\n */\n select?: (\n previousSelectedDate: Array<SingleDateSelection<TDate>>,\n newDate: TDate,\n ) => Array<SingleDateSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType>\n extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectRangeProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDat\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection\n * @template TDate - The type of the date object.\n */\nexport type UseCalendarSelectionProps<TDate extends DateFrameworkType> =\n | UseCalendarSelectionSingleProps<TDate>\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionRangeProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionOffsetProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate>;\n\nfunction isMultiselect<TDate>(\n props: UseCalendarSelectionProps<TDate>,\n): props is\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate> {\n return props.multiselect === true;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nfunction selectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<DateFrameworkType>,\n newDate: DateFrameworkType,\n) {\n if (previousSelectedDate?.startDate && previousSelectedDate?.endDate) {\n return {\n startDate: newDate,\n };\n }\n if (\n previousSelectedDate?.startDate &&\n dateAdapter.compare(newDate, previousSelectedDate?.startDate) >= 0\n ) {\n return {\n ...previousSelectedDate,\n endDate: newDate,\n };\n }\n return {\n startDate: newDate,\n };\n}\n\nfunction selectMultiselectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<TDate>[],\n newDate: TDate,\n): DateRangeSelection<TDate>[] {\n const lastRange = previousSelectedDate.length\n ? previousSelectedDate[previousSelectedDate.length - 1]\n : undefined;\n const isIncompleteRange = !lastRange?.endDate;\n\n if (isIncompleteRange) {\n const isNewSelection = previousSelectedDate.length === 0;\n if (isNewSelection) {\n return [{ startDate: newDate }];\n }\n const completeDateRange = selectDateRange(\n dateAdapter,\n previousSelectedDate[previousSelectedDate.length - 1],\n newDate,\n );\n return [...previousSelectedDate.slice(0, -1), completeDateRange];\n }\n return [...previousSelectedDate, { startDate: newDate }];\n}\n\nexport function useCalendarSelection<TDate extends DateFrameworkType>(\n props: UseCalendarSelectionProps<TDate>,\n) {\n const {\n multiselect,\n focusedDate: focusedDateProp,\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n onSelectionChange,\n onHoveredDateChange,\n isDaySelectable = () => true,\n isDayVisible = () => true,\n isOutsideAllowedDates = () => true,\n focusedDateRef,\n onFocusedDateChange,\n select: selectProp,\n selectionVariant,\n timezone,\n visibleMonth,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const startDateOffset =\n selectionVariant === \"offset\" ? props.startDateOffset : undefined;\n const endDateOffset =\n selectionVariant === \"offset\" ? props.endDateOffset : undefined;\n\n const getStartDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && startDateOffset) {\n return startDateOffset(date);\n }\n return date;\n },\n [selectionVariant, startDateOffset],\n );\n\n const getEndDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && endDateOffset) {\n return endDateOffset(date);\n }\n return date;\n },\n [selectionVariant, endDateOffset],\n );\n\n const setSelectedDate = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => {\n if (!isDaySelectable || isDaySelectable(newSelectedDate)) {\n const handleSelectionChange = <\n U extends\n | (TDate | null)\n | TDate[]\n | (DateRangeSelection<TDate> | null)\n | DateRangeSelection<TDate>[],\n >(\n updatedSelection: U,\n changeHandler:\n | ((event: SyntheticEvent, updatedSelection: U) => void)\n | undefined,\n ) => {\n changeHandler?.(event, updatedSelection);\n setSelectedDateState(updatedSelection);\n };\n\n switch (selectionVariant) {\n case \"single\": {\n if (isMultiselect(props)) {\n const multipleSingleSelectedDate = selectedDate as Array<\n SingleDateSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectSingleProps<TDate>[\"select\"];\n const updatedSelection: Array<SingleDateSelection<TDate>> = select\n ? select(multipleSingleSelectedDate ?? [], newSelectedDate)\n : [...(multipleSingleSelectedDate ?? []), newSelectedDate];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const singleSelectedDate =\n selectedDate as SingleDateSelection<TDate> | null;\n const select =\n selectProp as UseCalendarSelectionSingleProps<TDate>[\"select\"];\n const updatedSelection: SingleDateSelection<TDate> | null = select\n ? select(singleSelectedDate, newSelectedDate)\n : newSelectedDate;\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"range\": {\n if (isMultiselect(props)) {\n const multipleRangeSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleRangeSelectedDate ?? [], newSelectedDate)\n : selectMultiselectDateRange(\n dateAdapter,\n multipleRangeSelectedDate ?? [],\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const rangeSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(rangeSelectedDate, newSelectedDate)\n : selectDateRange(\n dateAdapter,\n rangeSelectedDate,\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"offset\": {\n if (isMultiselect(props)) {\n const multipleOffsetSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleOffsetSelectedDate ?? [], newSelectedDate)\n : [\n ...(multipleOffsetSelectedDate ?? []),\n {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n },\n ];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const offsetSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(offsetSelectedDate, newSelectedDate)\n : {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n }\n }\n },\n [\n dateAdapter,\n getEndDateOffset,\n getStartDateOffset,\n isDaySelectable,\n selectProp,\n selectedDate,\n selectionVariant,\n onSelectionChange,\n props, // Ensure props is included in the dependency array\n ],\n );\n\n const isSelected = useCallback(\n (date: TDate) => {\n if (!selectedDate) {\n return false;\n }\n\n const isSingleDateSelected = (element: SingleDateSelection<TDate>) =>\n dateAdapter.isSame(element, date, \"day\");\n\n const isDateRangeSelected = (range: DateRangeSelection<TDate>) =>\n range.startDate &&\n range.endDate &&\n dateAdapter.compare(date, range.startDate) >= 0 &&\n dateAdapter.compare(date, range.endDate) <= 0;\n\n if (Array.isArray(selectedDate)) {\n return selectedDate.some((element) =>\n isDateRangeSelection(element)\n ? isDateRangeSelected(element)\n : isSingleDateSelected(element as SingleDateSelection<TDate>),\n );\n }\n\n switch (selectionVariant) {\n case \"single\":\n return isSingleDateSelected(\n selectedDate as SingleDateSelection<TDate>,\n );\n case \"range\":\n case \"offset\":\n return isDateRangeSelected(selectedDate as DateRangeSelection<TDate>);\n default:\n return false;\n }\n },\n [dateAdapter, selectedDate, selectionVariant],\n );\n\n const getDefaultFocusedDate = () => {\n if (\n selectedDate &&\n (selectionVariant === \"range\" || selectionVariant === \"offset\")\n ) {\n const getFocusableDate = (\n result: TDate[],\n selection: DateRangeSelection<TDate>,\n ) => {\n if (selection?.startDate && isDayVisible(selection.startDate)) {\n return [...result, selection.startDate];\n }\n if (selection?.endDate && isDayVisible(selection.endDate)) {\n return [...result, selection.endDate];\n }\n return result;\n };\n let focusableSelectedDates:\n | DateRangeSelection<TDate>\n | DateRangeSelection<TDate>[];\n if (!multiselect) {\n focusableSelectedDates = [selectedDate as DateRangeSelection<TDate>];\n } else {\n focusableSelectedDates = selectedDate as DateRangeSelection<TDate>[];\n }\n const selectionInMonth = focusableSelectedDates\n .reduce(getFocusableDate, [])\n .sort((a, b) => dateAdapter.compare(a, b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n } else if (selectedDate && selectionVariant === \"single\") {\n const focusableSelectedDate = multiselect\n ? (selectedDate as SingleDateSelection<TDate>[])?.[0]\n : (selectedDate as SingleDateSelection<TDate>);\n if (focusableSelectedDate && isDayVisible(focusableSelectedDate)) {\n return focusableSelectedDate;\n }\n }\n\n // Defaults\n if (\n isDaySelectable?.(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n return dateAdapter.today(timezone);\n }\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable?.(visibleDay));\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n return null;\n };\n\n const [focusedDate, setFocusedDateState] = useControlled({\n controlled: focusedDateProp,\n default: useMemo(getDefaultFocusedDate, []),\n name: \"Calendar\",\n state: \"focusedDate\",\n });\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent | null, date: TDate | null) => {\n if (focusedDateRef && event?.target instanceof HTMLElement) {\n focusedDateRef.current = event.target;\n }\n if (\n date &&\n ((focusedDate && dateAdapter.isSame(date, focusedDate, \"day\")) ||\n isOutsideAllowedDates(date))\n ) {\n return;\n }\n setFocusedDateState(date);\n onFocusedDateChange?.(event, date);\n },\n [\n dateAdapter,\n focusedDate,\n focusedDateRef,\n isOutsideAllowedDates,\n onFocusedDateChange,\n ],\n );\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = useCallback(\n (event: SyntheticEvent, date: TDate | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n },\n [onHoveredDateChange],\n );\n\n const isHovered = useCallback(\n (date: TDate) => {\n return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, \"day\");\n },\n [dateAdapter, hoveredDate],\n );\n\n const getFocusableDates = useCallback(() => {\n const focusableDates: TDate[] = [];\n\n if (Array.isArray(selectedDate)) {\n // Handle array of selections\n for (const selection of selectedDate) {\n if (isDateRangeSelection(selection)) {\n if (selection.startDate && isDayVisible(selection.startDate)) {\n focusableDates.push(selection.startDate);\n } else if (selection.endDate && isDayVisible(selection.endDate)) {\n focusableDates.push(selection.endDate);\n }\n } else if (isDayVisible(selection as TDate)) {\n focusableDates.push(selection as TDate);\n }\n }\n } else if (selectedDate) {\n // Handle single selection\n if (isDateRangeSelection(selectedDate)) {\n if (selectedDate.startDate && isDayVisible(selectedDate.startDate)) {\n focusableDates.push(selectedDate.startDate);\n } else if (selectedDate.endDate && isDayVisible(selectedDate.endDate)) {\n focusableDates.push(selectedDate.endDate);\n }\n } else if (isDayVisible(selectedDate)) {\n focusableDates.push(selectedDate);\n }\n }\n\n if (\n focusedDate &&\n visibleMonth &&\n dateAdapter.isSame(focusedDate, visibleMonth, \"month\")\n ) {\n focusableDates.push(focusedDate);\n return focusableDates;\n }\n\n // Defaults\n if (\n focusableDates.length === 0 &&\n isDaySelectable(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n focusableDates.push(dateAdapter.today(timezone));\n }\n if (focusableDates.length === 0 || !focusableDates.some(isDayVisible)) {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable(visibleDay));\n if (firstSelectableDate) {\n focusableDates.push(firstSelectableDate);\n }\n }\n\n return focusableDates;\n }, [\n dateAdapter,\n focusedDate,\n isDaySelectable,\n isDayVisible,\n selectedDate,\n timezone,\n visibleMonth,\n ]);\n\n const isSelectedSpan = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return (\n dateAdapter.compare(date, range.startDate) > 0 &&\n dateAdapter.compare(date, range.endDate) < 0\n );\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isHoveredSpan = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n hoveredDate\n ) {\n const isForwardRange =\n dateAdapter.compare(hoveredDate, range.startDate) >= 0 &&\n ((dateAdapter.compare(date, range.startDate) >= 0 &&\n dateAdapter.compare(date, hoveredDate) <= 0) ||\n dateAdapter.isSame(date, hoveredDate, \"day\"));\n\n const isValidDayHovered =\n !isDaySelectable || isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n });\n },\n [\n dateAdapter,\n isOutsideAllowedDates,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isSelectedStart = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !isOutsideAllowedDates(range.startDate)\n ) {\n return dateAdapter.isSame(range.startDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedEnd = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return dateAdapter.isSame(range.endDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isHoveredOffset = useCallback(\n (date: TDate) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n dateAdapter.compare(date, startDate) >= 0 &&\n dateAdapter.compare(date, endDate) <= 0 &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n\n return false;\n },\n [\n dateAdapter,\n getStartDateOffset,\n getEndDateOffset,\n hoveredDate,\n isDaySelectable,\n selectionVariant,\n ],\n );\n\n return useMemo(\n () => ({\n state: {\n focusedDate,\n focusedDateRef,\n hoveredDate,\n selectedDate,\n focusableDates: getFocusableDates(),\n },\n helpers: {\n isSelected,\n setSelectedDate,\n isHovered,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n setFocusedDate,\n },\n }),\n [\n selectedDate,\n focusedDate,\n focusedDateRef,\n getFocusableDates,\n hoveredDate,\n isSelected,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n setFocusedDate,\n setHoveredDate,\n setSelectedDate,\n ],\n );\n}\n\nexport function useCalendarSelectionDay<TDate extends DateFrameworkType>({\n date,\n}: {\n date: TDate;\n}) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDaySelectable,\n },\n } = useCalendarContext<TDate>();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setSelectedDate(event, date);\n },\n [date, setSelectedDate],\n );\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n },\n [date, setSelectedDate],\n );\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\":\n isDaySelectable && !isDaySelectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["makePrefixer","useLocalization","useControlled","useCallback","generateDatesForMonth","useMemo","useCalendarContext","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendarSelection.js","sources":["../src/calendar/useCalendarSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { generateDatesForMonth } from \"./internal/utils\";\n\n/**\n * Type representing a single date selection.\n * @template TDate - The type of the date object.\n */\nexport type SingleDateSelection<TDate extends DateFrameworkType> = TDate;\n\n/**\n * Type representing a date range selection.\n * @template TDate - The type of the date object.\n */\nexport type DateRangeSelection<TDate extends DateFrameworkType> = {\n /**\n * The start date of the range, or null if empty\n */\n startDate?: TDate | null;\n /**\n * The end date of the range, or null if empty\n */\n endDate?: TDate | null;\n};\n\n/**\n * Checks if a value is a date range selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a date range selection, otherwise `false`.\n */\nexport function isDateRangeSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: date framework dependent\n value: any,\n): value is DateRangeSelection<TDate> {\n return (\n value &&\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n (\"startDate\" in value || \"endDate\" in value)\n );\n}\n\n/**\n * Base properties for calendar UseCalendarSelection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionBaseProps<\n TDate extends DateFrameworkType,\n> {\n /**\n * The currently focused date in the calendar, or null if no date is focused.\n */\n focusedDate?: TDate | null;\n /**\n * The currently hovered date.\n */\n hoveredDate?: TDate | null;\n /**\n * Determines if a date is outside the allowed date range.\n * @param date - The date to check.\n * @returns `true` if the date is outside the allowed range, otherwise `false`.\n */\n isOutsideAllowedDates?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is selectable.\n * @param date - The date to check.\n * @returns `true` if the day is selectable, otherwise `false`.\n */\n isDaySelectable?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is visible.\n * @param date - The date to check.\n * @returns `true` if the day is visible, otherwise `false`.\n */\n isDayVisible?: (date: TDate) => boolean;\n /**\n * Ref to attach to the focused element, enabling focus to be controlled.\n */\n focusedDateRef?: React.MutableRefObject<HTMLElement | null>;\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event, if user event triggered focus or null.\n * @param date - The new focused date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n date: TDate | null,\n ) => void;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: TDate | null,\n ) => void;\n /**\n * Specifies the timezone behavior:\n * - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate`.\n * - If set to \"default\", the default timezone of the date library will be used.\n * - If set to \"system\", the local system's timezone will be applied.\n * - If set to \"UTC\", the time will be returned in UTC.\n * - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.\n */\n timezone?: Timezone;\n /**\n * The currently visible month.\n */\n visibleMonth?: TDate;\n /**\n * If `true`, the calendar will be multiselect.\n */\n multiselect?: boolean;\n}\n\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * The currently selected date.\n */\n selectedDate?: SingleDateSelection<TDate> | null;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: SingleDateSelection<TDate> | null;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: SingleDateSelection<TDate> | null,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: SingleDateSelection<TDate> | null,\n newDate: SingleDateSelection<TDate> | null,\n ) => SingleDateSelection<TDate> | null;\n}\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<SingleDateSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n @param newDate\n */\n select?: (\n previousSelectedDate: Array<SingleDateSelection<TDate>>,\n newDate: TDate,\n ) => Array<SingleDateSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType>\n extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectRangeProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDat\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection\n * @template TDate - The type of the date object.\n */\nexport type UseCalendarSelectionProps<TDate extends DateFrameworkType> =\n | UseCalendarSelectionSingleProps<TDate>\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionRangeProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionOffsetProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate>;\n\nfunction isMultiselect<TDate>(\n props: UseCalendarSelectionProps<TDate>,\n): props is\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate> {\n return props.multiselect === true;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nfunction selectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<DateFrameworkType>,\n newDate: DateFrameworkType,\n) {\n if (previousSelectedDate?.startDate && previousSelectedDate?.endDate) {\n return {\n startDate: newDate,\n };\n }\n if (\n previousSelectedDate?.startDate &&\n dateAdapter.compare(newDate, previousSelectedDate?.startDate) >= 0\n ) {\n return {\n ...previousSelectedDate,\n endDate: newDate,\n };\n }\n return {\n startDate: newDate,\n };\n}\n\nfunction selectMultiselectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<TDate>[],\n newDate: TDate,\n): DateRangeSelection<TDate>[] {\n const lastRange = previousSelectedDate.length\n ? previousSelectedDate[previousSelectedDate.length - 1]\n : undefined;\n const isIncompleteRange = !lastRange?.endDate;\n\n if (isIncompleteRange) {\n const isNewSelection = previousSelectedDate.length === 0;\n if (isNewSelection) {\n return [{ startDate: newDate }];\n }\n const completeDateRange = selectDateRange(\n dateAdapter,\n previousSelectedDate[previousSelectedDate.length - 1],\n newDate,\n );\n return [...previousSelectedDate.slice(0, -1), completeDateRange];\n }\n return [...previousSelectedDate, { startDate: newDate }];\n}\n\nexport function useCalendarSelection<TDate extends DateFrameworkType>(\n props: UseCalendarSelectionProps<TDate>,\n) {\n const {\n multiselect,\n focusedDate: focusedDateProp,\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n onSelectionChange,\n onHoveredDateChange,\n isDaySelectable = () => true,\n isDayVisible = () => true,\n isOutsideAllowedDates = () => true,\n focusedDateRef,\n onFocusedDateChange,\n select: selectProp,\n selectionVariant,\n timezone,\n visibleMonth,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const startDateOffset =\n selectionVariant === \"offset\" ? props.startDateOffset : undefined;\n const endDateOffset =\n selectionVariant === \"offset\" ? props.endDateOffset : undefined;\n\n const getStartDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && startDateOffset) {\n return startDateOffset(date);\n }\n return date;\n },\n [selectionVariant, startDateOffset],\n );\n\n const getEndDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && endDateOffset) {\n return endDateOffset(date);\n }\n return date;\n },\n [selectionVariant, endDateOffset],\n );\n\n const setSelectedDate = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => {\n if (!isDaySelectable || isDaySelectable(newSelectedDate)) {\n const handleSelectionChange = <\n U extends\n | (TDate | null)\n | TDate[]\n | (DateRangeSelection<TDate> | null)\n | DateRangeSelection<TDate>[],\n >(\n updatedSelection: U,\n changeHandler:\n | ((event: SyntheticEvent, updatedSelection: U) => void)\n | undefined,\n ) => {\n changeHandler?.(event, updatedSelection);\n setSelectedDateState(updatedSelection);\n };\n\n switch (selectionVariant) {\n case \"single\": {\n if (isMultiselect(props)) {\n const multipleSingleSelectedDate = selectedDate as Array<\n SingleDateSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectSingleProps<TDate>[\"select\"];\n const updatedSelection: Array<SingleDateSelection<TDate>> = select\n ? select(multipleSingleSelectedDate ?? [], newSelectedDate)\n : [...(multipleSingleSelectedDate ?? []), newSelectedDate];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const singleSelectedDate =\n selectedDate as SingleDateSelection<TDate> | null;\n const select =\n selectProp as UseCalendarSelectionSingleProps<TDate>[\"select\"];\n const updatedSelection: SingleDateSelection<TDate> | null = select\n ? select(singleSelectedDate, newSelectedDate)\n : newSelectedDate;\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"range\": {\n if (isMultiselect(props)) {\n const multipleRangeSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleRangeSelectedDate ?? [], newSelectedDate)\n : selectMultiselectDateRange(\n dateAdapter,\n multipleRangeSelectedDate ?? [],\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const rangeSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(rangeSelectedDate, newSelectedDate)\n : selectDateRange(\n dateAdapter,\n rangeSelectedDate,\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"offset\": {\n if (isMultiselect(props)) {\n const multipleOffsetSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleOffsetSelectedDate ?? [], newSelectedDate)\n : [\n ...(multipleOffsetSelectedDate ?? []),\n {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n },\n ];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const offsetSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(offsetSelectedDate, newSelectedDate)\n : {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n }\n }\n },\n [\n dateAdapter,\n getEndDateOffset,\n getStartDateOffset,\n isDaySelectable,\n selectProp,\n selectedDate,\n selectionVariant,\n onSelectionChange,\n props, // Ensure props is included in the dependency array\n ],\n );\n\n const isSelected = useCallback(\n (date: TDate) => {\n if (!selectedDate) {\n return false;\n }\n if (selectionVariant === \"single\") {\n const singleDates = (\n Array.isArray(selectedDate) ? selectedDate : [selectedDate]\n ) as TDate[];\n return singleDates.some((singleDate) =>\n dateAdapter.isSame(singleDate, date, \"day\"),\n );\n }\n return false;\n },\n [dateAdapter, selectedDate, selectionVariant],\n );\n\n const getDefaultFocusedDate = () => {\n if (\n selectedDate &&\n (selectionVariant === \"range\" || selectionVariant === \"offset\")\n ) {\n const getFocusableDate = (\n result: TDate[],\n selection: DateRangeSelection<TDate>,\n ) => {\n if (selection?.startDate && isDayVisible(selection.startDate)) {\n return [...result, selection.startDate];\n }\n if (selection?.endDate && isDayVisible(selection.endDate)) {\n return [...result, selection.endDate];\n }\n return result;\n };\n let focusableSelectedDates:\n | DateRangeSelection<TDate>\n | DateRangeSelection<TDate>[];\n if (!multiselect) {\n focusableSelectedDates = [selectedDate as DateRangeSelection<TDate>];\n } else {\n focusableSelectedDates = selectedDate as DateRangeSelection<TDate>[];\n }\n const selectionInMonth = focusableSelectedDates\n .reduce(getFocusableDate, [])\n .sort((a, b) => dateAdapter.compare(a, b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n } else if (selectedDate && selectionVariant === \"single\") {\n const focusableSelectedDate = multiselect\n ? (selectedDate as SingleDateSelection<TDate>[])?.[0]\n : (selectedDate as SingleDateSelection<TDate>);\n if (focusableSelectedDate && isDayVisible(focusableSelectedDate)) {\n return focusableSelectedDate;\n }\n }\n\n // Defaults\n if (\n isDaySelectable?.(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n return dateAdapter.today(timezone);\n }\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable?.(visibleDay));\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n return null;\n };\n\n const [focusedDate, setFocusedDateState] = useControlled({\n controlled: focusedDateProp,\n default: useMemo(getDefaultFocusedDate, []),\n name: \"Calendar\",\n state: \"focusedDate\",\n });\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent | null, date: TDate | null) => {\n if (focusedDateRef && event?.target instanceof HTMLElement) {\n focusedDateRef.current = event.target;\n }\n if (\n date &&\n ((focusedDate && dateAdapter.isSame(date, focusedDate, \"day\")) ||\n isOutsideAllowedDates(date))\n ) {\n return;\n }\n setFocusedDateState(date);\n onFocusedDateChange?.(event, date);\n },\n [\n dateAdapter,\n focusedDate,\n focusedDateRef,\n isOutsideAllowedDates,\n onFocusedDateChange,\n ],\n );\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = useCallback(\n (event: SyntheticEvent, date: TDate | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n },\n [onHoveredDateChange],\n );\n\n const isHovered = useCallback(\n (date: TDate) => {\n return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, \"day\");\n },\n [dateAdapter, hoveredDate],\n );\n\n const getFocusableDates = useCallback(() => {\n const focusableDates: TDate[] = [];\n\n if (Array.isArray(selectedDate)) {\n // Handle array of selections\n for (const selection of selectedDate) {\n if (isDateRangeSelection(selection)) {\n if (selection.startDate && isDayVisible(selection.startDate)) {\n focusableDates.push(selection.startDate);\n } else if (selection.endDate && isDayVisible(selection.endDate)) {\n focusableDates.push(selection.endDate);\n }\n } else if (isDayVisible(selection as TDate)) {\n focusableDates.push(selection as TDate);\n }\n }\n } else if (selectedDate) {\n // Handle single selection\n if (isDateRangeSelection(selectedDate)) {\n if (selectedDate.startDate && isDayVisible(selectedDate.startDate)) {\n focusableDates.push(selectedDate.startDate);\n } else if (selectedDate.endDate && isDayVisible(selectedDate.endDate)) {\n focusableDates.push(selectedDate.endDate);\n }\n } else if (isDayVisible(selectedDate)) {\n focusableDates.push(selectedDate);\n }\n }\n\n if (\n focusedDate &&\n visibleMonth &&\n dateAdapter.isSame(focusedDate, visibleMonth, \"month\")\n ) {\n focusableDates.push(focusedDate);\n return focusableDates;\n }\n\n // Defaults\n if (\n focusableDates.length === 0 &&\n isDaySelectable(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n focusableDates.push(dateAdapter.today(timezone));\n }\n if (focusableDates.length === 0 || !focusableDates.some(isDayVisible)) {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable(visibleDay));\n if (firstSelectableDate) {\n focusableDates.push(firstSelectableDate);\n }\n }\n\n return focusableDates;\n }, [\n dateAdapter,\n focusedDate,\n isDaySelectable,\n isDayVisible,\n selectedDate,\n timezone,\n visibleMonth,\n ]);\n\n const isHoveredStart = useCallback(\n (date: TDate) => {\n if (\n selectionVariant === \"range\" &&\n hoveredDate &&\n dateAdapter.isSame(date, hoveredDate, \"day\")\n ) {\n const dateRanges = (\n Array.isArray(selectedDate) ? selectedDate : [selectedDate]\n ) as DateRangeSelection<TDate>[];\n const allDatesPopulated = dateRanges.every(\n (range) => range?.startDate && range?.endDate,\n );\n const startDateMatches = dateRanges.some(\n (range) =>\n range?.startDate &&\n dateAdapter.isSame(date, range.startDate, \"day\"),\n );\n const firstIncompleteRange = dateRanges.find(\n (range) => range?.startDate && !range?.endDate,\n );\n const newDateRangeRequired =\n firstIncompleteRange?.startDate &&\n dateAdapter.compare(date, firstIncompleteRange.startDate) < 0;\n return allDatesPopulated || startDateMatches || newDateRangeRequired;\n }\n if (selectionVariant === \"offset\" && hoveredDate) {\n const startDate = getStartDateOffset(hoveredDate);\n return (\n dateAdapter.isSame(date, startDate, \"day\") &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n return false;\n },\n [\n dateAdapter,\n getStartDateOffset,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isHoveredSpan = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"range\") {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n hoveredDate\n ) {\n const isForwardRange =\n dateAdapter.compare(hoveredDate, range.startDate) > 0 &&\n dateAdapter.compare(date, range.startDate) > 0 &&\n dateAdapter.compare(date, hoveredDate) < 0;\n\n const isValidDayHovered =\n !isDaySelectable || isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n });\n }\n if (selectionVariant === \"offset\" && hoveredDate) {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n return (\n dateAdapter.compare(date, startDate) > 0 &&\n dateAdapter.compare(date, endDate) < 0 &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n return false;\n },\n [\n dateAdapter,\n isOutsideAllowedDates,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isHoveredEnd = useCallback(\n (date: TDate) => {\n if (\n selectionVariant === \"range\" &&\n hoveredDate &&\n dateAdapter.isSame(date, hoveredDate, \"day\")\n ) {\n const dateRanges = (\n Array.isArray(selectedDate) ? selectedDate : [selectedDate]\n ) as DateRangeSelection<TDate>[];\n const isIncompleteRange = dateRanges.some(\n (range) =>\n range?.startDate &&\n !range?.endDate &&\n hoveredDate &&\n dateAdapter.compare(hoveredDate, range.startDate) >= 0,\n );\n const endDateMatches = dateRanges.some(\n (range) =>\n range?.endDate && dateAdapter.isSame(range.endDate, date, \"day\"),\n );\n return endDateMatches || isIncompleteRange;\n }\n if (selectionVariant === \"offset\" && hoveredDate) {\n const endDate = getEndDateOffset(hoveredDate);\n return (\n dateAdapter.isSame(date, endDate, \"day\") &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n return false;\n },\n [\n dateAdapter,\n getEndDateOffset,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isSameDay = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n range?.startDate &&\n range?.endDate &&\n dateAdapter.isSame(range?.startDate, date, \"day\")\n ) {\n return dateAdapter.isSame(range?.startDate, range?.endDate, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedStart = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"single\") {\n return false;\n }\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !isOutsideAllowedDates(range.startDate)\n ) {\n return dateAdapter.isSame(range.startDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedSpan = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"single\") {\n return false;\n }\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return (\n dateAdapter.compare(date, range.startDate) > 0 &&\n dateAdapter.compare(date, range.endDate) < 0\n );\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedEnd = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"single\") {\n return false;\n }\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return dateAdapter.isSame(range.endDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n return useMemo(\n () => ({\n state: {\n focusedDate,\n focusedDateRef,\n hoveredDate,\n selectedDate,\n focusableDates: getFocusableDates(),\n },\n helpers: {\n isHovered,\n isSelected,\n setHoveredDate,\n isSameDay,\n setSelectedDate,\n isSelectedStart,\n isSelectedSpan,\n isSelectedEnd,\n isHoveredStart,\n isHoveredSpan,\n isHoveredEnd,\n isDaySelectable,\n setFocusedDate,\n },\n }),\n [\n selectedDate,\n focusedDate,\n focusedDateRef,\n getFocusableDates,\n hoveredDate,\n isSelected,\n isHoveredStart,\n isHoveredSpan,\n isHoveredEnd,\n isSameDay,\n isSelectedStart,\n isSelectedSpan,\n isSelectedEnd,\n isDaySelectable,\n setFocusedDate,\n setHoveredDate,\n setSelectedDate,\n ],\n );\n}\n\nexport function useCalendarSelectionDay<TDate extends DateFrameworkType>({\n date,\n}: {\n date: TDate;\n}) {\n const {\n state: { selectionVariant },\n helpers: {\n setSelectedDate,\n isSameDay,\n isSelected,\n isSelectedStart,\n isSelectedSpan,\n isSelectedEnd,\n isHovered,\n isHoveredStart,\n isHoveredSpan,\n isHoveredEnd,\n isDaySelectable,\n },\n } = useCalendarContext<TDate>();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setSelectedDate(event, date);\n },\n [date, setSelectedDate],\n );\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n },\n [date, setSelectedDate],\n );\n\n const selected = isSelected(date);\n const selectedStart = isSelectedStart(date);\n const selectedSpan = isSelectedSpan(date);\n const selectedEnd = isSelectedEnd(date);\n const selectedOnSameDay = isSameDay(date);\n\n const hovered = isHovered(date);\n const hoveredStart = isHoveredStart(date);\n const hoveredSpan = isHoveredSpan(date);\n const hoveredEnd = isHoveredEnd(date);\n\n return {\n handleClick,\n handleKeyDown,\n status: {\n hovered,\n selected,\n selectedStart,\n selectedSpan,\n selectedEnd,\n hoveredStart,\n hoveredSpan,\n hoveredEnd,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]:\n selectionVariant === \"single\" ? selected : undefined,\n [withBaseName(\"selectedStart\")]:\n selectionVariant !== \"single\" ? selectedStart : undefined,\n [withBaseName(\"selectedSpan\")]:\n selectionVariant !== \"single\" ? selectedSpan : undefined,\n [withBaseName(\"selectedEnd\")]:\n selectionVariant !== \"single\" ? selectedEnd : undefined,\n [withBaseName(\"selectedSameDay\")]:\n selectionVariant !== \"single\" && selectedOnSameDay,\n [withBaseName(\"hoveredStart\")]:\n selectionVariant !== \"single\" && hoveredStart,\n [withBaseName(\"hoveredSpan\")]:\n selectionVariant !== \"single\" && hoveredSpan,\n [withBaseName(\"hoveredEnd\")]:\n selectionVariant !== \"single\" && hoveredEnd,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\":\n isDaySelectable && !isDaySelectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["makePrefixer","useLocalization","useControlled","useCallback","generateDatesForMonth","useMemo","useCalendarContext","clsx"],"mappings":"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"}