@jobber/components 8.14.0 → 8.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/FilterPicker.d.ts +1 -0
  2. package/{Combobox.js → FilterPicker.js} +3 -3
  3. package/dist/Autocomplete-es.js +1 -1
  4. package/dist/BottomSheet-cjs.js +109 -77
  5. package/dist/BottomSheet-es.js +103 -75
  6. package/dist/Card/index.cjs +1 -2
  7. package/dist/Card/index.mjs +1 -2
  8. package/dist/DataDump/index.cjs +1 -2
  9. package/dist/DataDump/index.mjs +1 -2
  10. package/dist/DataList/components/DataListFilters/components/DataListSort/index.cjs +11 -11
  11. package/dist/DataList/components/DataListFilters/components/DataListSort/index.mjs +11 -11
  12. package/dist/DataList/components/DataListFilters/index.cjs +11 -11
  13. package/dist/DataList/components/DataListFilters/index.mjs +11 -11
  14. package/dist/DataList/index.cjs +11 -11
  15. package/dist/DataList/index.mjs +11 -11
  16. package/dist/DataListSort-cjs.js +5 -5
  17. package/dist/DataListSort-es.js +5 -5
  18. package/dist/FilterPicker/FilterPicker.d.ts +11 -0
  19. package/dist/{Combobox/Combobox.types.d.ts → FilterPicker/FilterPicker.types.d.ts} +51 -51
  20. package/dist/FilterPicker/FilterPickerProvider.d.ts +18 -0
  21. package/dist/FilterPicker/components/FilterPickerAction/FilterPickerAction.d.ts +3 -0
  22. package/dist/FilterPicker/components/FilterPickerAction/index.cjs +12 -0
  23. package/dist/FilterPicker/components/FilterPickerAction/index.d.ts +1 -0
  24. package/dist/FilterPicker/components/FilterPickerAction/index.mjs +6 -0
  25. package/dist/FilterPicker/components/FilterPickerActivator/FilterPickerActivator.d.ts +3 -0
  26. package/dist/{Combobox/components/ComboboxActivator → FilterPicker/components/FilterPickerActivator}/index.cjs +3 -3
  27. package/dist/FilterPicker/components/FilterPickerActivator/index.d.ts +1 -0
  28. package/dist/{Combobox/components/ComboboxActivator → FilterPicker/components/FilterPickerActivator}/index.mjs +2 -2
  29. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContent.d.ts +3 -0
  30. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentHeader/FilterPickerContentHeader.d.ts +3 -0
  31. package/dist/{Combobox/components/ComboboxContent/ComboboxContentHeader → FilterPicker/components/FilterPickerContent/FilterPickerContentHeader}/index.cjs +2 -2
  32. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentHeader/index.d.ts +1 -0
  33. package/dist/{Combobox/components/ComboboxContent/ComboboxContentHeader → FilterPicker/components/FilterPickerContent/FilterPickerContentHeader}/index.mjs +1 -1
  34. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentList/FilterPickerContentList.d.ts +3 -0
  35. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentList/FilterPickerContentList.module.css.d.ts +13 -0
  36. package/dist/{Combobox/components/ComboboxContent/ComboboxContentList → FilterPicker/components/FilterPickerContent/FilterPickerContentList}/index.cjs +5 -5
  37. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentList/index.d.ts +1 -0
  38. package/dist/{Combobox/components/ComboboxContent/ComboboxContentList → FilterPicker/components/FilterPickerContent/FilterPickerContentList}/index.mjs +4 -4
  39. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/FilterPickerContentSearch.d.ts +3 -0
  40. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/index.cjs +10 -0
  41. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/index.d.ts +1 -0
  42. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/index.mjs +4 -0
  43. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/FilterPickerLoadMore.d.ts +6 -0
  44. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/index.cjs +9 -0
  45. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/index.d.ts +1 -0
  46. package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/index.mjs +3 -0
  47. package/dist/{Combobox/components/ComboboxContent → FilterPicker/components/FilterPickerContent}/index.cjs +8 -8
  48. package/dist/FilterPicker/components/FilterPickerContent/index.d.ts +1 -0
  49. package/dist/{Combobox/components/ComboboxContent → FilterPicker/components/FilterPickerContent}/index.mjs +7 -7
  50. package/dist/FilterPicker/components/FilterPickerOption/FilterPickerOption.d.ts +3 -0
  51. package/dist/{Combobox/components/ComboboxOption → FilterPicker/components/FilterPickerOption}/index.cjs +3 -3
  52. package/dist/FilterPicker/components/FilterPickerOption/index.d.ts +1 -0
  53. package/dist/{Combobox/components/ComboboxOption → FilterPicker/components/FilterPickerOption}/index.mjs +2 -2
  54. package/dist/FilterPicker/components/FilterPickerTrigger/FilterPickerTrigger.d.ts +3 -0
  55. package/dist/{Combobox/components/ComboboxTrigger → FilterPicker/components/FilterPickerTrigger}/index.cjs +3 -3
  56. package/dist/FilterPicker/components/FilterPickerTrigger/index.d.ts +1 -0
  57. package/dist/{Combobox/components/ComboboxTrigger → FilterPicker/components/FilterPickerTrigger}/index.mjs +2 -2
  58. package/dist/FilterPicker/constants.d.ts +1 -0
  59. package/dist/FilterPicker/hooks/useFilterPicker.d.ts +17 -0
  60. package/dist/FilterPicker/hooks/useFilterPickerAccessibility.d.ts +9 -0
  61. package/dist/FilterPicker/hooks/useFilterPickerActivatorAccessibility.d.ts +2 -0
  62. package/dist/FilterPicker/hooks/useFilterPickerContent.d.ts +9 -0
  63. package/dist/FilterPicker/hooks/useFilterPickerValidation.d.ts +12 -0
  64. package/dist/FilterPicker/hooks/useMakeFilterPickerHandlers.d.ts +8 -0
  65. package/dist/{Combobox → FilterPicker}/index.cjs +13 -13
  66. package/dist/FilterPicker/index.d.ts +3 -0
  67. package/dist/{Combobox → FilterPicker}/index.mjs +11 -11
  68. package/dist/{Combobox-cjs.js → FilterPicker-cjs.js} +25 -25
  69. package/dist/{Combobox-es.js → FilterPicker-es.js} +25 -25
  70. package/dist/{ComboboxAction-cjs.js → FilterPickerAction-cjs.js} +5 -5
  71. package/dist/{ComboboxAction-es.js → FilterPickerAction-es.js} +5 -5
  72. package/dist/{ComboboxActivator-cjs.js → FilterPickerActivator-cjs.js} +8 -8
  73. package/dist/{ComboboxActivator-es.js → FilterPickerActivator-es.js} +9 -9
  74. package/dist/{ComboboxContent-cjs.js → FilterPickerContent-cjs.js} +19 -19
  75. package/dist/{ComboboxContent-es.js → FilterPickerContent-es.js} +20 -20
  76. package/dist/{ComboboxContentHeader-cjs.js → FilterPickerContentHeader-cjs.js} +4 -4
  77. package/dist/{ComboboxContentHeader-es.js → FilterPickerContentHeader-es.js} +4 -4
  78. package/dist/{ComboboxContentList-cjs.js → FilterPickerContentList-cjs.js} +7 -7
  79. package/dist/{ComboboxContentList-es.js → FilterPickerContentList-es.js} +7 -7
  80. package/dist/{ComboboxContentSearch-cjs.js → FilterPickerContentSearch-cjs.js} +4 -4
  81. package/dist/{ComboboxContentSearch-es.js → FilterPickerContentSearch-es.js} +4 -4
  82. package/dist/FilterPickerLoadMore-cjs.js +16 -0
  83. package/dist/{ComboboxLoadMore-es.js → FilterPickerLoadMore-es.js} +4 -4
  84. package/dist/{ComboboxOption-cjs.js → FilterPickerOption-cjs.js} +5 -5
  85. package/dist/{ComboboxOption-es.js → FilterPickerOption-es.js} +5 -5
  86. package/dist/FilterPickerProvider-cjs.js +13 -0
  87. package/dist/FilterPickerProvider-es.js +10 -0
  88. package/dist/{ComboboxTrigger-cjs.js → FilterPickerTrigger-cjs.js} +4 -4
  89. package/dist/{ComboboxTrigger-es.js → FilterPickerTrigger-es.js} +4 -4
  90. package/dist/InputNumberExperimental-cjs.js +3 -4
  91. package/dist/InputNumberExperimental-es.js +2 -3
  92. package/dist/Menu/index.cjs +1 -2
  93. package/dist/Menu/index.mjs +1 -2
  94. package/dist/Menu-cjs.js +11 -56
  95. package/dist/Menu-es.js +4 -49
  96. package/dist/MenuSubmenuTrigger-cjs.js +160 -345
  97. package/dist/MenuSubmenuTrigger-es.js +4 -186
  98. package/dist/Modal/index.mjs +1 -1
  99. package/dist/NumberFieldInput-cjs.js +3 -4
  100. package/dist/NumberFieldInput-es.js +2 -3
  101. package/dist/Page/index.cjs +1 -2
  102. package/dist/Page/index.mjs +1 -2
  103. package/dist/{DrawerRoot-cjs.js → ScrollAreaViewport-cjs.js} +1042 -3
  104. package/dist/{DrawerRoot-es.js → ScrollAreaViewport-es.js} +1035 -5
  105. package/dist/constants-cjs.js +2 -2
  106. package/dist/constants-es.js +2 -2
  107. package/dist/docs/Autocomplete/Autocomplete.md +1 -1
  108. package/dist/docs/Chip/Chip.md +4 -4
  109. package/dist/docs/DataList/DataList.md +16 -15
  110. package/dist/docs/{Combobox/Combobox.md → FilterPicker/FilterPicker.md} +91 -85
  111. package/dist/docs/Menu/Menu.md +1 -1
  112. package/dist/docs/MultiSelect/MultiSelect.md +1 -1
  113. package/dist/docs/Tabs/Tabs.md +2 -2
  114. package/dist/docs/index.md +1 -1
  115. package/dist/docs/usage-guidelines/usage-guidelines.md +5 -5
  116. package/dist/floating-ui.react-es.js +1 -1
  117. package/dist/index.cjs +14 -15
  118. package/dist/index.d.mts +1 -1
  119. package/dist/index.d.ts +1 -1
  120. package/dist/index.mjs +12 -13
  121. package/dist/primitives/BottomSheet/BottomSheet.d.ts +15 -16
  122. package/dist/primitives/BottomSheet/BottomSheet.types.d.ts +27 -0
  123. package/dist/primitives/BottomSheet/BottomSheet.utils.d.ts +6 -0
  124. package/dist/primitives/BottomSheet/index.cjs +7 -2
  125. package/dist/primitives/BottomSheet/index.d.ts +1 -0
  126. package/dist/primitives/BottomSheet/index.mjs +7 -2
  127. package/dist/primitives/InputNumberExperimental/index.cjs +1 -2
  128. package/dist/primitives/InputNumberExperimental/index.mjs +1 -2
  129. package/dist/primitives/index.cjs +7 -8
  130. package/dist/primitives/index.mjs +7 -8
  131. package/dist/styles.css +115 -54
  132. package/dist/unstyledPrimitives/index.cjs +665 -297
  133. package/dist/unstyledPrimitives/index.d.ts +1 -0
  134. package/dist/unstyledPrimitives/index.mjs +375 -8
  135. package/dist/useRenderElement-es.js +1 -1
  136. package/dist/useValueChanged-cjs.js +251 -1
  137. package/dist/useValueChanged-es.js +248 -2
  138. package/dist/utils/meta/meta.json +5 -5
  139. package/package.json +6 -6
  140. package/rollup.config.mjs +2 -2
  141. package/Combobox.d.ts +0 -1
  142. package/dist/Combobox/Combobox.d.ts +0 -11
  143. package/dist/Combobox/ComboboxProvider.d.ts +0 -18
  144. package/dist/Combobox/components/ComboboxAction/ComboboxAction.d.ts +0 -3
  145. package/dist/Combobox/components/ComboboxAction/index.cjs +0 -12
  146. package/dist/Combobox/components/ComboboxAction/index.d.ts +0 -1
  147. package/dist/Combobox/components/ComboboxAction/index.mjs +0 -6
  148. package/dist/Combobox/components/ComboboxActivator/ComboboxActivator.d.ts +0 -3
  149. package/dist/Combobox/components/ComboboxActivator/index.d.ts +0 -1
  150. package/dist/Combobox/components/ComboboxContent/ComboboxContent.d.ts +0 -3
  151. package/dist/Combobox/components/ComboboxContent/ComboboxContentHeader/ComboboxContentHeader.d.ts +0 -3
  152. package/dist/Combobox/components/ComboboxContent/ComboboxContentHeader/index.d.ts +0 -1
  153. package/dist/Combobox/components/ComboboxContent/ComboboxContentList/ComboboxContentList.d.ts +0 -3
  154. package/dist/Combobox/components/ComboboxContent/ComboboxContentList/index.d.ts +0 -1
  155. package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/ComboboxContentSearch.d.ts +0 -3
  156. package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.cjs +0 -10
  157. package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.d.ts +0 -1
  158. package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.mjs +0 -4
  159. package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/ComboboxLoadMore.d.ts +0 -6
  160. package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.cjs +0 -9
  161. package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.d.ts +0 -1
  162. package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.mjs +0 -3
  163. package/dist/Combobox/components/ComboboxContent/index.d.ts +0 -1
  164. package/dist/Combobox/components/ComboboxOption/ComboboxOption.d.ts +0 -3
  165. package/dist/Combobox/components/ComboboxOption/index.d.ts +0 -1
  166. package/dist/Combobox/components/ComboboxTrigger/ComboboxTrigger.d.ts +0 -3
  167. package/dist/Combobox/components/ComboboxTrigger/index.d.ts +0 -1
  168. package/dist/Combobox/constants.d.ts +0 -1
  169. package/dist/Combobox/hooks/useCombobox.d.ts +0 -17
  170. package/dist/Combobox/hooks/useComboboxAccessibility.d.ts +0 -9
  171. package/dist/Combobox/hooks/useComboboxActivatorAccessibility.d.ts +0 -2
  172. package/dist/Combobox/hooks/useComboboxContent.d.ts +0 -9
  173. package/dist/Combobox/hooks/useComboboxValidation.d.ts +0 -12
  174. package/dist/Combobox/hooks/useMakeComboboxHandlers.d.ts +0 -8
  175. package/dist/Combobox/index.d.ts +0 -3
  176. package/dist/ComboboxLoadMore-cjs.js +0 -16
  177. package/dist/ComboboxProvider-cjs.js +0 -13
  178. package/dist/ComboboxProvider-es.js +0 -10
  179. package/dist/useBaseUiId-cjs.js +0 -275
  180. package/dist/useBaseUiId-es.js +0 -251
@@ -12,6 +12,7 @@
12
12
  */
13
13
  export { Drawer } from "@base-ui/react/drawer";
14
14
  export { Menu } from "@base-ui/react/menu";
15
+ export { ScrollArea } from "@base-ui/react/scroll-area";
15
16
  export { Combobox } from "@base-ui/react";
16
17
  export { NumberField } from "@base-ui/react/number-field";
17
18
  export { Separator } from "@base-ui/react/separator";
@@ -1,9 +1,8 @@
1
- import { u as useDialogRootContext, am as useDrawerProviderContext, an as DrawerBackdropCssVars, ao as DrawerPopupCssVars, ap as DrawerProviderContext, aq as CommonPopupDataAttributes, N as popupStateMapping, ar as useDialogPortalContext, as as DialogStore, l as contains, g as getTarget, at as useDrawerRootContext, al as useTriggerRegistration, au as DrawerPopupDataAttributes, av as useDrawerSnapPoints, aw as DrawerViewportContext, ax as BASE_UI_SWIPE_IGNORE_SELECTOR, ay as DRAWER_CONTENT_ATTRIBUTE, a as DrawerBackdrop, c as DrawerContent, b as DrawerPopup, D as DrawerPortal, d as DrawerRoot, V as inertValue, Z as createSelector, az as useStore, a4 as useOpenInteractionType, a9 as useDismiss, J as useInteractions, a2 as useOnFirstRender, aA as Store, ai as pressableTriggerOpenStateMapping, L as triggerOpenStateMapping, R as FloatingPortal, a7 as useScrollLock, U as InternalBackdrop, X as DROPDOWN_COLLISION_AVOIDANCE, Q as FloatingFocusManager } from '../DrawerRoot-es.js';
2
- import { b as DrawerClose, a as DrawerTitle, D as DrawerTrigger, u as useMenuRootContext, p as useMenuPositionerContext, q as useContextMenuRootContext, r as useCompositeListItem, s as useMenuItem, R as REGULAR_ITEM, t as itemMapping, v as useDirection, w as MenuStore, m as MenuGroup, o as MenuGroupLabel, d as MenuItem, c as MenuLinkItem, k as MenuPopup, i as MenuPortal, j as MenuPositioner, l as MenuRadioGroup, e as MenuRadioItem, f as MenuRadioItemIndicator, h as MenuRoot, n as MenuSubmenuRoot, g as MenuSubmenuTrigger, M as MenuTrigger, x as useFloatingRootContext, y as useClick, z as useListNavigation, A as useTypeahead, B as getPseudoElementBounds, C as CompositeList, E as useAnchorPositioning, F as getDisabledMountTransitionStyles, I as IndexGuessBehavior } from '../MenuSubmenuTrigger-es.js';
1
+ import { u as useDialogRootContext, aq as useDrawerProviderContext, ar as DrawerBackdropCssVars, as as DrawerPopupCssVars, at as DrawerProviderContext, au as CommonPopupDataAttributes, L as popupStateMapping, av as useDialogPortalContext, aw as DialogStore, o as contains, i as getTarget, ax as useDrawerRootContext, ao as useTriggerRegistration, ay as DrawerPopupDataAttributes, az as useDrawerSnapPoints, aA as DrawerViewportContext, aB as BASE_UI_SWIPE_IGNORE_SELECTOR, aC as DRAWER_CONTENT_ATTRIBUTE, c as DrawerBackdrop, f as DrawerContent, d as DrawerPopup, b as DrawerPortal, a as DrawerRoot, D as DrawerTrigger, Q as useDirection, V as inertValue, aD as useScrollAreaRootContext, aE as getOffset, aF as ScrollAreaRootCssVars, aG as scrollAreaStateAttributesMapping, aH as useScrollAreaViewportContext, S as ScrollAreaRoot, e as ScrollAreaViewport, Z as createSelector, aI as useStore, a4 as useOpenInteractionType, ag as useClick, a9 as useDismiss, ac as useInteractions, a2 as useOnFirstRender, aJ as Store, al as pressableTriggerOpenStateMapping, ap as triggerOpenStateMapping, O as FloatingPortal, a7 as useScrollLock, U as InternalBackdrop, X as DROPDOWN_COLLISION_AVOIDANCE, N as FloatingFocusManager } from '../ScrollAreaViewport-es.js';
2
+ import { a as DrawerClose, D as DrawerTitle, u as useMenuRootContext, o as useMenuPositionerContext, p as useContextMenuRootContext, q as useCompositeListItem, r as useMenuItem, R as REGULAR_ITEM, s as itemMapping, t as MenuStore, l as MenuGroup, n as MenuGroupLabel, c as MenuItem, b as MenuLinkItem, j as MenuPopup, h as MenuPortal, i as MenuPositioner, k as MenuRadioGroup, d as MenuRadioItem, e as MenuRadioItemIndicator, g as MenuRoot, m as MenuSubmenuRoot, f as MenuSubmenuTrigger, M as MenuTrigger, v as useFloatingRootContext, w as useListNavigation, x as useTypeahead, y as getPseudoElementBounds, C as CompositeList, z as useAnchorPositioning, A as getDisabledMountTransitionStyles, I as IndexGuessBehavior } from '../MenuSubmenuTrigger-es.js';
3
3
  import * as React from 'react';
4
- import { u as useRenderElement, m as mergeProps, f as formatErrorMessage, N as NOOP, E as EMPTY_OBJECT, d as EMPTY_ARRAY, b as useRefWithInit, c as useMergedRefs } from '../useRenderElement-es.js';
5
- import { u as useBaseUiId, a as useButton, e as error } from '../useBaseUiId-es.js';
6
- import { u as useIsoLayoutEffect, a as useStableCallback, t as transitionStatusMapping, k as createChangeEventDetails, V as imperativeAction, s as ownerDocument, g as clamp, c as useTimeout, a3 as swipe, D as useAnimationFrame, X as TransitionStatusDataAttributes, K as triggerHover, h as useControlled, P as itemPress, d as useTransitionStatus, e as useOpenChangeComplete, R as useAnimationsFinished, i as useValueAsRef, r as createGenericEventDetails, o as inputClear, m as inputChange, M as focusOut, Q as outsidePress, y as useValueChanged, n as none, a4 as inputPress, v as visuallyHiddenInput, l as visuallyHidden, z as stopEvent, L as listNavigation, B as closePress, a1 as isAndroid, a5 as isFirefox, J as escapeKey, a6 as clearPress, S as SafeReact, a7 as chipRemovePress, a8 as scrub, _ as isWebKit } from '../useValueChanged-es.js';
4
+ import { u as useRenderElement, m as mergeProps, f as formatErrorMessage, N as NOOP, E as EMPTY_OBJECT, d as EMPTY_ARRAY, a as useRefWithInit, b as useMergedRefs } from '../useRenderElement-es.js';
5
+ import { u as useBaseUiId, d as useIsoLayoutEffect, a as useStableCallback, t as transitionStatusMapping, k as createChangeEventDetails, U as imperativeAction, s as ownerDocument, g as clamp, b as useTimeout, a5 as swipe, Z as useAnimationFrame, X as TransitionStatusDataAttributes, K as triggerHover, h as useControlled, P as itemPress, c as useTransitionStatus, e as useOpenChangeComplete, R as useAnimationsFinished, i as useValueAsRef, r as createGenericEventDetails, o as inputClear, m as inputChange, M as focusOut, Q as outsidePress, z as useValueChanged, n as none, a6 as inputPress, v as visuallyHiddenInput, l as visuallyHidden, y as useButton, A as stopEvent, L as listNavigation, C as closePress, a3 as isAndroid, a7 as isFirefox, J as escapeKey, a8 as clearPress, a9 as SafeReact, aa as error, ab as chipRemovePress, ac as scrub, $ as isWebKit } from '../useValueChanged-es.js';
7
6
  import { jsx, jsxs } from 'react/jsx-runtime';
8
7
  import { a as isHTMLElement, f as getComputedStyle, b as isElement, k as getWindow } from '../floating-ui.utils.dom-es.js';
9
8
  import * as ReactDOM from 'react-dom';
@@ -2719,7 +2718,7 @@ function shouldDismissFromStartEdge(direction, axis) {
2719
2718
  return null;
2720
2719
  }
2721
2720
 
2722
- var index_parts$3 = /*#__PURE__*/Object.freeze({
2721
+ var index_parts$4 = /*#__PURE__*/Object.freeze({
2723
2722
  __proto__: null,
2724
2723
  Backdrop: DrawerBackdrop,
2725
2724
  Close: DrawerClose,
@@ -3531,7 +3530,7 @@ function createMenuHandle() {
3531
3530
  return new MenuHandle();
3532
3531
  }
3533
3532
 
3534
- var index_parts$2 = /*#__PURE__*/Object.freeze({
3533
+ var index_parts$3 = /*#__PURE__*/Object.freeze({
3535
3534
  __proto__: null,
3536
3535
  Arrow: MenuArrow,
3537
3536
  Backdrop: MenuBackdrop,
@@ -3557,6 +3556,374 @@ var index_parts$2 = /*#__PURE__*/Object.freeze({
3557
3556
  createHandle: createMenuHandle
3558
3557
  });
3559
3558
 
3559
+ const ScrollAreaScrollbarContext = /*#__PURE__*/React.createContext(undefined);
3560
+ if (process.env.NODE_ENV !== "production") ScrollAreaScrollbarContext.displayName = "ScrollAreaScrollbarContext";
3561
+ function useScrollAreaScrollbarContext() {
3562
+ const context = React.useContext(ScrollAreaScrollbarContext);
3563
+ if (context === undefined) {
3564
+ throw new Error(process.env.NODE_ENV !== "production" ? 'Base UI: ScrollAreaScrollbarContext is missing. ScrollAreaScrollbar parts must be placed within <ScrollArea.Scrollbar>.' : formatErrorMessage(54));
3565
+ }
3566
+ return context;
3567
+ }
3568
+
3569
+ let ScrollAreaScrollbarCssVars = /*#__PURE__*/function (ScrollAreaScrollbarCssVars) {
3570
+ /**
3571
+ * The scroll area thumb's height.
3572
+ * @type {number}
3573
+ */
3574
+ ScrollAreaScrollbarCssVars["scrollAreaThumbHeight"] = "--scroll-area-thumb-height";
3575
+ /**
3576
+ * The scroll area thumb's width.
3577
+ * @type {number}
3578
+ */
3579
+ ScrollAreaScrollbarCssVars["scrollAreaThumbWidth"] = "--scroll-area-thumb-width";
3580
+ return ScrollAreaScrollbarCssVars;
3581
+ }({});
3582
+
3583
+ /**
3584
+ * A vertical or horizontal scrollbar for the scroll area.
3585
+ * Renders a `<div>` element.
3586
+ *
3587
+ * Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
3588
+ */
3589
+ const ScrollAreaScrollbar = /*#__PURE__*/React.forwardRef(function ScrollAreaScrollbar(componentProps, forwardedRef) {
3590
+ const {
3591
+ render,
3592
+ className,
3593
+ orientation = 'vertical',
3594
+ keepMounted = false,
3595
+ ...elementProps
3596
+ } = componentProps;
3597
+ const {
3598
+ hovering,
3599
+ scrollingX,
3600
+ scrollingY,
3601
+ hiddenState,
3602
+ overflowEdges,
3603
+ scrollbarYRef,
3604
+ scrollbarXRef,
3605
+ viewportRef,
3606
+ thumbYRef,
3607
+ thumbXRef,
3608
+ handlePointerDown,
3609
+ handlePointerUp,
3610
+ rootId,
3611
+ thumbSize,
3612
+ hasMeasuredScrollbar
3613
+ } = useScrollAreaRootContext();
3614
+ const state = {
3615
+ hovering,
3616
+ scrolling: {
3617
+ horizontal: scrollingX,
3618
+ vertical: scrollingY
3619
+ }[orientation],
3620
+ orientation,
3621
+ hasOverflowX: !hiddenState.x,
3622
+ hasOverflowY: !hiddenState.y,
3623
+ overflowXStart: overflowEdges.xStart,
3624
+ overflowXEnd: overflowEdges.xEnd,
3625
+ overflowYStart: overflowEdges.yStart,
3626
+ overflowYEnd: overflowEdges.yEnd,
3627
+ cornerHidden: hiddenState.corner
3628
+ };
3629
+ const direction = useDirection();
3630
+ const hideTrackUntilMeasured = !hasMeasuredScrollbar && !keepMounted;
3631
+ React.useEffect(() => {
3632
+ const viewportEl = viewportRef.current;
3633
+ const scrollbarEl = orientation === 'vertical' ? scrollbarYRef.current : scrollbarXRef.current;
3634
+ if (!scrollbarEl) {
3635
+ return undefined;
3636
+ }
3637
+ function handleWheel(event) {
3638
+ if (!viewportEl || !scrollbarEl || event.ctrlKey) {
3639
+ return;
3640
+ }
3641
+ event.preventDefault();
3642
+ if (orientation === 'vertical') {
3643
+ if (viewportEl.scrollTop === 0 && event.deltaY < 0) {
3644
+ return;
3645
+ }
3646
+ } else if (viewportEl.scrollLeft === 0 && event.deltaX < 0) {
3647
+ return;
3648
+ }
3649
+ if (orientation === 'vertical') {
3650
+ if (viewportEl.scrollTop === viewportEl.scrollHeight - viewportEl.clientHeight && event.deltaY > 0) {
3651
+ return;
3652
+ }
3653
+ } else if (viewportEl.scrollLeft === viewportEl.scrollWidth - viewportEl.clientWidth && event.deltaX > 0) {
3654
+ return;
3655
+ }
3656
+ if (orientation === 'vertical') {
3657
+ viewportEl.scrollTop += event.deltaY;
3658
+ } else {
3659
+ viewportEl.scrollLeft += event.deltaX;
3660
+ }
3661
+ }
3662
+ scrollbarEl.addEventListener('wheel', handleWheel, {
3663
+ passive: false
3664
+ });
3665
+ return () => {
3666
+ scrollbarEl.removeEventListener('wheel', handleWheel);
3667
+ };
3668
+ }, [orientation, scrollbarXRef, scrollbarYRef, viewportRef]);
3669
+ const props = {
3670
+ ...(rootId && {
3671
+ 'data-id': `${rootId}-scrollbar`
3672
+ }),
3673
+ onPointerDown(event) {
3674
+ if (event.button !== 0) {
3675
+ return;
3676
+ }
3677
+
3678
+ // Ignore clicks on thumb
3679
+ if (event.currentTarget !== event.target) {
3680
+ return;
3681
+ }
3682
+ if (!viewportRef.current) {
3683
+ return;
3684
+ }
3685
+
3686
+ // Handle Y-axis (vertical) scroll
3687
+ if (thumbYRef.current && scrollbarYRef.current && orientation === 'vertical') {
3688
+ const thumbYOffset = getOffset(thumbYRef.current, 'margin', 'y');
3689
+ const scrollbarYOffset = getOffset(scrollbarYRef.current, 'padding', 'y');
3690
+ const thumbHeight = thumbYRef.current.offsetHeight;
3691
+ const trackRectY = scrollbarYRef.current.getBoundingClientRect();
3692
+ const clickY = event.clientY - trackRectY.top - thumbHeight / 2 - scrollbarYOffset + thumbYOffset / 2;
3693
+ const scrollableContentHeight = viewportRef.current.scrollHeight;
3694
+ const viewportHeight = viewportRef.current.clientHeight;
3695
+ const maxThumbOffsetY = scrollbarYRef.current.offsetHeight - thumbHeight - scrollbarYOffset - thumbYOffset;
3696
+ const scrollRatioY = clickY / maxThumbOffsetY;
3697
+ const newScrollTop = scrollRatioY * (scrollableContentHeight - viewportHeight);
3698
+ viewportRef.current.scrollTop = newScrollTop;
3699
+ }
3700
+ if (thumbXRef.current && scrollbarXRef.current && orientation === 'horizontal') {
3701
+ const thumbXOffset = getOffset(thumbXRef.current, 'margin', 'x');
3702
+ const scrollbarXOffset = getOffset(scrollbarXRef.current, 'padding', 'x');
3703
+ const thumbWidth = thumbXRef.current.offsetWidth;
3704
+ const trackRectX = scrollbarXRef.current.getBoundingClientRect();
3705
+ const clickX = event.clientX - trackRectX.left - thumbWidth / 2 - scrollbarXOffset + thumbXOffset / 2;
3706
+ const scrollableContentWidth = viewportRef.current.scrollWidth;
3707
+ const viewportWidth = viewportRef.current.clientWidth;
3708
+ const maxThumbOffsetX = scrollbarXRef.current.offsetWidth - thumbWidth - scrollbarXOffset - thumbXOffset;
3709
+ const scrollRatioX = clickX / maxThumbOffsetX;
3710
+ let newScrollLeft;
3711
+ if (direction === 'rtl') {
3712
+ // In RTL, invert the scroll direction
3713
+ newScrollLeft = (1 - scrollRatioX) * (scrollableContentWidth - viewportWidth);
3714
+
3715
+ // Adjust for browsers that use negative scrollLeft in RTL
3716
+ if (viewportRef.current.scrollLeft <= 0) {
3717
+ newScrollLeft = -newScrollLeft;
3718
+ }
3719
+ } else {
3720
+ newScrollLeft = scrollRatioX * (scrollableContentWidth - viewportWidth);
3721
+ }
3722
+ viewportRef.current.scrollLeft = newScrollLeft;
3723
+ }
3724
+ handlePointerDown(event);
3725
+ },
3726
+ onPointerUp: handlePointerUp,
3727
+ style: {
3728
+ position: 'absolute',
3729
+ touchAction: 'none',
3730
+ WebkitUserSelect: 'none',
3731
+ userSelect: 'none',
3732
+ visibility: hideTrackUntilMeasured ? 'hidden' : undefined,
3733
+ ...(orientation === 'vertical' && {
3734
+ top: 0,
3735
+ bottom: `var(${ScrollAreaRootCssVars.scrollAreaCornerHeight})`,
3736
+ insetInlineEnd: 0,
3737
+ [ScrollAreaScrollbarCssVars.scrollAreaThumbHeight]: `${thumbSize.height}px`
3738
+ }),
3739
+ ...(orientation === 'horizontal' && {
3740
+ insetInlineStart: 0,
3741
+ insetInlineEnd: `var(${ScrollAreaRootCssVars.scrollAreaCornerWidth})`,
3742
+ bottom: 0,
3743
+ [ScrollAreaScrollbarCssVars.scrollAreaThumbWidth]: `${thumbSize.width}px`
3744
+ })
3745
+ }
3746
+ };
3747
+ const element = useRenderElement('div', componentProps, {
3748
+ ref: [forwardedRef, orientation === 'vertical' ? scrollbarYRef : scrollbarXRef],
3749
+ state,
3750
+ props: [props, elementProps],
3751
+ stateAttributesMapping: scrollAreaStateAttributesMapping
3752
+ });
3753
+ const contextValue = React.useMemo(() => ({
3754
+ orientation
3755
+ }), [orientation]);
3756
+ const isHidden = orientation === 'vertical' ? hiddenState.y : hiddenState.x;
3757
+ const shouldRender = keepMounted || !isHidden;
3758
+ if (!shouldRender) {
3759
+ return null;
3760
+ }
3761
+ return /*#__PURE__*/jsx(ScrollAreaScrollbarContext.Provider, {
3762
+ value: contextValue,
3763
+ children: element
3764
+ });
3765
+ });
3766
+ if (process.env.NODE_ENV !== "production") ScrollAreaScrollbar.displayName = "ScrollAreaScrollbar";
3767
+
3768
+ /**
3769
+ * A container for the content of the scroll area.
3770
+ * Renders a `<div>` element.
3771
+ *
3772
+ * Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
3773
+ */
3774
+ const ScrollAreaContent = /*#__PURE__*/React.forwardRef(function ScrollAreaContent(componentProps, forwardedRef) {
3775
+ const {
3776
+ render,
3777
+ className,
3778
+ ...elementProps
3779
+ } = componentProps;
3780
+ const contentWrapperRef = React.useRef(null);
3781
+ const {
3782
+ computeThumbPosition
3783
+ } = useScrollAreaViewportContext();
3784
+ const {
3785
+ viewportState
3786
+ } = useScrollAreaRootContext();
3787
+ useIsoLayoutEffect(() => {
3788
+ if (typeof ResizeObserver === 'undefined') {
3789
+ return undefined;
3790
+ }
3791
+ let hasInitialized = false;
3792
+ const ro = new ResizeObserver(() => {
3793
+ // ResizeObserver fires once upon observing, so we skip the initial call
3794
+ // to avoid double-calculating the thumb position on mount.
3795
+ if (!hasInitialized) {
3796
+ hasInitialized = true;
3797
+ return;
3798
+ }
3799
+ computeThumbPosition();
3800
+ });
3801
+ if (contentWrapperRef.current) {
3802
+ ro.observe(contentWrapperRef.current);
3803
+ }
3804
+ return () => {
3805
+ ro.disconnect();
3806
+ };
3807
+ }, [computeThumbPosition]);
3808
+ const element = useRenderElement('div', componentProps, {
3809
+ ref: [forwardedRef, contentWrapperRef],
3810
+ state: viewportState,
3811
+ stateAttributesMapping: scrollAreaStateAttributesMapping,
3812
+ props: [{
3813
+ role: 'presentation',
3814
+ style: {
3815
+ minWidth: 'fit-content'
3816
+ }
3817
+ }, elementProps]
3818
+ });
3819
+ return element;
3820
+ });
3821
+ if (process.env.NODE_ENV !== "production") ScrollAreaContent.displayName = "ScrollAreaContent";
3822
+
3823
+ /**
3824
+ * The draggable part of the scrollbar that indicates the current scroll position.
3825
+ * Renders a `<div>` element.
3826
+ *
3827
+ * Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
3828
+ */
3829
+ const ScrollAreaThumb = /*#__PURE__*/React.forwardRef(function ScrollAreaThumb(componentProps, forwardedRef) {
3830
+ const {
3831
+ render,
3832
+ className,
3833
+ ...elementProps
3834
+ } = componentProps;
3835
+ const {
3836
+ thumbYRef,
3837
+ thumbXRef,
3838
+ handlePointerDown,
3839
+ handlePointerMove,
3840
+ handlePointerUp,
3841
+ setScrollingX,
3842
+ setScrollingY,
3843
+ hasMeasuredScrollbar
3844
+ } = useScrollAreaRootContext();
3845
+ const {
3846
+ orientation
3847
+ } = useScrollAreaScrollbarContext();
3848
+ const state = {
3849
+ orientation
3850
+ };
3851
+ const element = useRenderElement('div', componentProps, {
3852
+ ref: [forwardedRef, orientation === 'vertical' ? thumbYRef : thumbXRef],
3853
+ state,
3854
+ props: [{
3855
+ onPointerDown: handlePointerDown,
3856
+ onPointerMove: handlePointerMove,
3857
+ onPointerUp(event) {
3858
+ if (orientation === 'vertical') {
3859
+ setScrollingY(false);
3860
+ }
3861
+ if (orientation === 'horizontal') {
3862
+ setScrollingX(false);
3863
+ }
3864
+ handlePointerUp(event);
3865
+ },
3866
+ style: {
3867
+ visibility: hasMeasuredScrollbar ? undefined : 'hidden',
3868
+ ...(orientation === 'vertical' && {
3869
+ height: `var(${ScrollAreaScrollbarCssVars.scrollAreaThumbHeight})`
3870
+ }),
3871
+ ...(orientation === 'horizontal' && {
3872
+ width: `var(${ScrollAreaScrollbarCssVars.scrollAreaThumbWidth})`
3873
+ })
3874
+ }
3875
+ }, elementProps]
3876
+ });
3877
+ return element;
3878
+ });
3879
+ if (process.env.NODE_ENV !== "production") ScrollAreaThumb.displayName = "ScrollAreaThumb";
3880
+
3881
+ /**
3882
+ * A small rectangular area that appears at the intersection of horizontal and vertical scrollbars.
3883
+ * Renders a `<div>` element.
3884
+ *
3885
+ * Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
3886
+ */
3887
+ const ScrollAreaCorner = /*#__PURE__*/React.forwardRef(function ScrollAreaCorner(componentProps, forwardedRef) {
3888
+ const {
3889
+ render,
3890
+ className,
3891
+ ...elementProps
3892
+ } = componentProps;
3893
+ const {
3894
+ cornerRef,
3895
+ cornerSize,
3896
+ hiddenState
3897
+ } = useScrollAreaRootContext();
3898
+ const element = useRenderElement('div', componentProps, {
3899
+ ref: [forwardedRef, cornerRef],
3900
+ props: [{
3901
+ style: {
3902
+ position: 'absolute',
3903
+ bottom: 0,
3904
+ insetInlineEnd: 0,
3905
+ width: cornerSize.width,
3906
+ height: cornerSize.height
3907
+ }
3908
+ }, elementProps]
3909
+ });
3910
+ if (hiddenState.corner) {
3911
+ return null;
3912
+ }
3913
+ return element;
3914
+ });
3915
+ if (process.env.NODE_ENV !== "production") ScrollAreaCorner.displayName = "ScrollAreaCorner";
3916
+
3917
+ var index_parts$2 = /*#__PURE__*/Object.freeze({
3918
+ __proto__: null,
3919
+ Content: ScrollAreaContent,
3920
+ Corner: ScrollAreaCorner,
3921
+ Root: ScrollAreaRoot,
3922
+ Scrollbar: ScrollAreaScrollbar,
3923
+ Thumb: ScrollAreaThumb,
3924
+ Viewport: ScrollAreaViewport
3925
+ });
3926
+
3560
3927
  const ComboboxRootContext = /*#__PURE__*/React.createContext(undefined);
3561
3928
  if (process.env.NODE_ENV !== "production") ComboboxRootContext.displayName = "ComboboxRootContext";
3562
3929
  const ComboboxFloatingContext = /*#__PURE__*/React.createContext(undefined);
@@ -7398,4 +7765,4 @@ function useRender(params) {
7398
7765
  return useRenderElement(params.defaultTagName ?? 'div', params, params);
7399
7766
  }
7400
7767
 
7401
- export { index_parts$1 as Combobox, index_parts$3 as Drawer, index_parts$2 as Menu, index_parts as NumberField, Separator, useRender };
7768
+ export { index_parts$1 as Combobox, index_parts$4 as Drawer, index_parts$3 as Menu, index_parts as NumberField, index_parts$2 as ScrollArea, Separator, useRender };
@@ -566,4 +566,4 @@ function renderTag(Tag, props) {
566
566
  return /*#__PURE__*/React.createElement(Tag, props);
567
567
  }
568
568
 
569
- export { EMPTY_OBJECT as E, NOOP as N, makeEventPreventable as a, useRefWithInit as b, useMergedRefs as c, EMPTY_ARRAY as d, formatErrorMessage as f, isReactVersionAtLeast as i, mergeProps as m, useRenderElement as u };
569
+ export { EMPTY_OBJECT as E, NOOP as N, useRefWithInit as a, useMergedRefs as b, makeEventPreventable as c, EMPTY_ARRAY as d, formatErrorMessage as f, isReactVersionAtLeast as i, mergeProps as m, useRenderElement as u };