@economic/taco 1.25.3 → 1.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/dist/components/ButtonGroup/ButtonGroup.d.ts +5 -0
  2. package/dist/esm/packages/taco/src/components/ButtonGroup/ButtonGroup.js +46 -0
  3. package/dist/esm/packages/taco/src/components/ButtonGroup/ButtonGroup.js.map +1 -0
  4. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +1 -1
  5. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js +1 -1
  6. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +2 -2
  7. package/dist/esm/packages/taco/src/components/Group/Group.js +1 -1
  8. package/dist/esm/packages/taco/src/components/Group/Group.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js +1 -1
  10. package/dist/esm/packages/taco/src/components/Header/components/PrimaryNavigation.js +1 -1
  11. package/dist/esm/packages/taco/src/components/Input/Input.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Listbox/useListbox.js +1 -1
  14. package/dist/esm/packages/taco/src/components/Listbox/useMultiListbox.js +1 -1
  15. package/dist/esm/packages/taco/src/components/Menu/Menu.js +2 -2
  16. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +1 -1
  17. package/dist/esm/packages/taco/src/components/Menu/components/Header.js +1 -1
  18. package/dist/esm/packages/taco/src/components/Menu/components/Item.js +1 -1
  19. package/dist/esm/packages/taco/src/components/Menu/components/Link.js +1 -1
  20. package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js +1 -1
  21. package/dist/esm/packages/taco/src/components/Select/useSelect.js +1 -1
  22. package/dist/esm/packages/taco/src/components/Select2/Select2.js +2 -2
  23. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +2 -2
  24. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +1 -1
  25. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js +1 -1
  26. package/dist/esm/packages/taco/src/components/Table/hooks/useTableKeyboardNavigation.js +1 -1
  27. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +1 -1
  28. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +1 -1
  29. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js +48 -0
  30. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js.map +1 -0
  31. package/dist/esm/packages/taco/src/index.js +6 -4
  32. package/dist/esm/packages/taco/src/index.js.map +1 -1
  33. package/dist/hooks/useIntersectionObserver.d.ts +2 -0
  34. package/dist/index.d.ts +2 -0
  35. package/dist/taco.cjs.development.js +823 -741
  36. package/dist/taco.cjs.development.js.map +1 -1
  37. package/dist/taco.cjs.production.min.js +1 -1
  38. package/dist/taco.cjs.production.min.js.map +1 -1
  39. package/package.json +2 -2
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ButtonProps } from '../Button/Button';
3
+ export declare const ButtonGroup: React.ForwardRefExoticComponent<Pick<React.HTMLAttributes<HTMLElement>, "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & {
4
+ children: React.ReactElement<ButtonProps>[];
5
+ } & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,46 @@
1
+ import React__default from 'react';
2
+ import cn from 'classnames';
3
+ import { IconButton } from '../IconButton/IconButton.js';
4
+ import { useMergedRef } from '../../hooks/useMergedRef.js';
5
+ import { Group } from '../Group/Group.js';
6
+ import { Menu } from '../Menu/Menu.js';
7
+ import { useIntersectionObserver } from '../../hooks/useIntersectionObserver.js';
8
+
9
+ const sanitizeButtonPropsForMenuItem = props => {
10
+ const {
11
+ appearance: _1,
12
+ drawer: _2,
13
+ fluid: _3,
14
+ hanger: _4,
15
+ menu: _5,
16
+ popover: _6,
17
+ tooltip: _7,
18
+ ...attributes
19
+ } = props;
20
+ return attributes;
21
+ };
22
+ const OFFSET = 32 + 8;
23
+ const ButtonGroup = /*#__PURE__*/React__default.forwardRef(function ButtonGroup(props, ref) {
24
+ const internalRef = useMergedRef(ref);
25
+ const intersectedChildIndex = useIntersectionObserver(internalRef, OFFSET);
26
+ const children = React__default.Children.toArray(props.children);
27
+ const hidden = intersectedChildIndex !== undefined ? children.slice(intersectedChildIndex) : [];
28
+ return /*#__PURE__*/React__default.createElement(Group, Object.assign({}, props, {
29
+ ref: internalRef
30
+ }), children.map((child, index) => /*#__PURE__*/React__default.cloneElement(child, {
31
+ className: cn(child.props.className, {
32
+ visible: intersectedChildIndex === undefined || index < intersectedChildIndex,
33
+ 'invisible order-[100] pointer-events-none': intersectedChildIndex !== undefined && index >= intersectedChildIndex
34
+ })
35
+ })), hidden.length ? /*#__PURE__*/React__default.createElement(IconButton, {
36
+ className: "sticky right-0 order-[99]",
37
+ "data-intesection-observer": "ignore",
38
+ icon: "more",
39
+ menu: menuProps => /*#__PURE__*/React__default.createElement(Menu, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu.Content, null, hidden.map((button, index) => /*#__PURE__*/React__default.createElement(Menu.Item, Object.assign({
40
+ key: index
41
+ }, sanitizeButtonPropsForMenuItem(button.props))))))
42
+ }) : null);
43
+ });
44
+
45
+ export { ButtonGroup };
46
+ //# sourceMappingURL=ButtonGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonGroup.js","sources":["../../../../../../../src/components/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { ButtonProps } from '../Button/Button';\nimport { Group } from '../Group/Group';\nimport { Menu } from '../Menu/Menu';\nimport { useIntersectionObserver } from '../../hooks/useIntersectionObserver';\nimport { IconButton } from '../IconButton/IconButton';\n\nconst sanitizeButtonPropsForMenuItem = props => {\n const { appearance: _1, drawer: _2, fluid: _3, hanger: _4, menu: _5, popover: _6, tooltip: _7, ...attributes } = props;\n return attributes;\n};\n\ntype ButtonGroupProps = Omit<React.HTMLAttributes<HTMLElement>, 'children'> & {\n children: React.ReactElement<ButtonProps>[];\n};\n\nconst OFFSET = 32 + 8;\n\nexport const ButtonGroup = React.forwardRef(function ButtonGroup(props: ButtonGroupProps, ref: React.Ref<HTMLDivElement>) {\n const internalRef = useMergedRef<HTMLDivElement>(ref);\n const intersectedChildIndex = useIntersectionObserver(internalRef, OFFSET);\n const children = React.Children.toArray(props.children) as React.ReactElement<ButtonProps>[];\n\n const hidden = intersectedChildIndex !== undefined ? children.slice(intersectedChildIndex) : [];\n\n return (\n <Group {...props} ref={internalRef}>\n {children.map((child, index) =>\n React.cloneElement(child, {\n className: cn(child.props.className, {\n visible: intersectedChildIndex === undefined || index < intersectedChildIndex,\n 'invisible order-[100] pointer-events-none':\n intersectedChildIndex !== undefined && index >= intersectedChildIndex,\n }),\n })\n )}\n {hidden.length ? (\n <IconButton\n className=\"sticky right-0 order-[99]\"\n data-intesection-observer=\"ignore\"\n icon=\"more\"\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content>\n {hidden.map((button, index) => (\n <Menu.Item key={index} {...sanitizeButtonPropsForMenuItem(button.props)} />\n ))}\n </Menu.Content>\n </Menu>\n )}\n />\n ) : null}\n </Group>\n );\n});\n"],"names":["sanitizeButtonPropsForMenuItem","props","appearance","_1","drawer","_2","fluid","_3","hanger","_4","menu","_5","popover","_6","tooltip","_7","attributes","OFFSET","ButtonGroup","React","forwardRef","ref","internalRef","useMergedRef","intersectedChildIndex","useIntersectionObserver","children","Children","toArray","hidden","undefined","slice","Group","map","child","index","cloneElement","className","cn","visible","length","IconButton","icon","menuProps","Menu","Content","button","Item","key"],"mappings":";;;;;;;;AASA,MAAMA,8BAA8B,GAAGC,KAAK;EACxC,MAAM;IAAEC,UAAU,EAAEC,EAAE;IAAEC,MAAM,EAAEC,EAAE;IAAEC,KAAK,EAAEC,EAAE;IAAEC,MAAM,EAAEC,EAAE;IAAEC,IAAI,EAAEC,EAAE;IAAEC,OAAO,EAAEC,EAAE;IAAEC,OAAO,EAAEC,EAAE;IAAE,GAAGC;GAAY,GAAGf,KAAK;EACtH,OAAOe,UAAU;AACrB,CAAC;AAMD,MAAMC,MAAM,GAAG,EAAE,GAAG,CAAC;MAERC,WAAW,gBAAGC,cAAK,CAACC,UAAU,CAAC,SAASF,WAAW,CAACjB,KAAuB,EAAEoB,GAA8B;EACpH,MAAMC,WAAW,GAAGC,YAAY,CAAiBF,GAAG,CAAC;EACrD,MAAMG,qBAAqB,GAAGC,uBAAuB,CAACH,WAAW,EAAEL,MAAM,CAAC;EAC1E,MAAMS,QAAQ,GAAGP,cAAK,CAACQ,QAAQ,CAACC,OAAO,CAAC3B,KAAK,CAACyB,QAAQ,CAAsC;EAE5F,MAAMG,MAAM,GAAGL,qBAAqB,KAAKM,SAAS,GAAGJ,QAAQ,CAACK,KAAK,CAACP,qBAAqB,CAAC,GAAG,EAAE;EAE/F,oBACIL,6BAACa,KAAK,oBAAK/B,KAAK;IAAEoB,GAAG,EAAEC;MAClBI,QAAQ,CAACO,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,kBACvBhB,cAAK,CAACiB,YAAY,CAACF,KAAK,EAAE;IACtBG,SAAS,EAAEC,EAAE,CAACJ,KAAK,CAACjC,KAAK,CAACoC,SAAS,EAAE;MACjCE,OAAO,EAAEf,qBAAqB,KAAKM,SAAS,IAAIK,KAAK,GAAGX,qBAAqB;MAC7E,2CAA2C,EACvCA,qBAAqB,KAAKM,SAAS,IAAIK,KAAK,IAAIX;KACvD;GACJ,CAAC,CACL,EACAK,MAAM,CAACW,MAAM,gBACVrB,6BAACsB,UAAU;IACPJ,SAAS,EAAC,2BAA2B;iCACX,QAAQ;IAClCK,IAAI,EAAC,MAAM;IACXhC,IAAI,EAAEiC,SAAS,iBACXxB,6BAACyB,IAAI,oBAAKD,SAAS,gBACfxB,6BAACyB,IAAI,CAACC,OAAO,QACRhB,MAAM,CAACI,GAAG,CAAC,CAACa,MAAM,EAAEX,KAAK,kBACtBhB,6BAACyB,IAAI,CAACG,IAAI;MAACC,GAAG,EAAEb;OAAWnC,8BAA8B,CAAC8C,MAAM,CAAC7C,KAAK,CAAC,EAC1E,CAAC,CACS;IAGzB,GACF,IAAI,CACJ;AAEhB,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { useRef, useState, useMemo, useEffect } from 'react';
2
- import { v4 } from 'uuid';
3
2
  import { useMergedRef } from '../../hooks/useMergedRef.js';
3
+ import { v4 } from 'uuid';
4
4
  import debounce from 'lodash-es/debounce';
5
5
  import { getId } from '../Listbox/ScrollableList.js';
6
6
  import { createCustomKeyboardEvent } from '../../utils/input.js';
@@ -1,9 +1,9 @@
1
1
  import { forwardRef, useState, useMemo, useCallback, useEffect, createElement } from 'react';
2
2
  import cn from 'classnames';
3
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
3
4
  import { Root } from '@radix-ui/react-dialog';
4
5
  import { DrawerContext } from './Context.js';
5
6
  import { Content, InnerContent, Title, Footer, Close, Actions } from './components/Content.js';
6
- import { useControllableState } from '@radix-ui/react-use-controllable-state';
7
7
  import { Trigger } from './components/Trigger.js';
8
8
 
9
9
  const Outlet = /*#__PURE__*/forwardRef(function Outlet(props, ref) {
@@ -4,10 +4,10 @@ import { Backdrop } from '../../Backdrop/Backdrop.js';
4
4
  import { IconButton } from '../../IconButton/IconButton.js';
5
5
  import { useLocalization } from '../../Provider/Localization.js';
6
6
  import { useMergedRef } from '../../../hooks/useMergedRef.js';
7
- import { Title as Title$1, Close as Close$1, Portal as Portal$1, Overlay, Content as Content$1 } from '@radix-ui/react-dialog';
8
- import { useDraggable } from '../../../utils/hooks/useDraggable.js';
9
7
  import { Group } from '../../Group/Group.js';
10
8
  import { useCurrentMenu } from '../../Menu/Context.js';
9
+ import { Title as Title$1, Close as Close$1, Portal as Portal$1, Overlay, Content as Content$1 } from '@radix-ui/react-dialog';
10
+ import { useDraggable } from '../../../utils/hooks/useDraggable.js';
11
11
  import { useCurrentDrawer } from '../Context.js';
12
12
  import { getBackdropClassNames, getDrawerContainerClassNames, getDrawerContentClassNames, getDrawerDragHandlerClassNames } from '../util.js';
13
13
  import { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut.js';
@@ -7,7 +7,7 @@ const Group = /*#__PURE__*/forwardRef(function Group(props, ref) {
7
7
  orientation = 'horizontal',
8
8
  ...otherProps
9
9
  } = props;
10
- const className = cn('flex ', 'gap-2', {
10
+ const className = cn('flex gap-2', {
11
11
  'flex-col ': orientation === 'vertical'
12
12
  }, props.className);
13
13
  return /*#__PURE__*/createElement(Tag, Object.assign({}, otherProps, {
@@ -1 +1 @@
1
- {"version":3,"file":"Group.js","sources":["../../../../../../../src/components/Group/Group.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { Orientation } from '../../types';\n\nexport type GroupProps = React.HTMLAttributes<HTMLElement> & {\n /**\n * Change what html tag element will render.\n * Default value is `span`\n */\n as?: 'div' | 'span' | 'nav';\n /** Content should be composed of other Taco elements */\n children: React.ReactNode;\n /**\n * Define orientation of grouping.\n * @defaultValue horizontal\n */\n orientation?: Orientation;\n};\n\nexport const Group = React.forwardRef(function Group(props: GroupProps, ref: React.Ref<HTMLDivElement>) {\n const { as: Tag = 'span', orientation = 'horizontal', ...otherProps } = props;\n const className = cn('flex ', 'gap-2', { 'flex-col ': orientation === 'vertical' }, props.className);\n return <Tag {...otherProps} className={className} data-taco=\"group\" ref={ref} />;\n});\n"],"names":["Group","React","props","ref","as","Tag","orientation","otherProps","className","cn"],"mappings":";;;MAmBaA,KAAK,gBAAGC,UAAgB,CAAC,SAASD,KAAK,CAACE,KAAiB,EAAEC,GAA8B;EAClG,MAAM;IAAEC,EAAE,EAAEC,GAAG,GAAG,MAAM;IAAEC,WAAW,GAAG,YAAY;IAAE,GAAGC;GAAY,GAAGL,KAAK;EAC7E,MAAMM,SAAS,GAAGC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE;IAAE,WAAW,EAAEH,WAAW,KAAK;GAAY,EAAEJ,KAAK,CAACM,SAAS,CAAC;EACpG,oBAAOP,cAACI,GAAG,oBAAKE,UAAU;IAAEC,SAAS,EAAEA,SAAS;iBAAY,OAAO;IAACL,GAAG,EAAEA;KAAO;AACpF,CAAC;;;;"}
1
+ {"version":3,"file":"Group.js","sources":["../../../../../../../src/components/Group/Group.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { Orientation } from '../../types';\n\nexport type GroupProps = React.HTMLAttributes<HTMLElement> & {\n /**\n * Change what html tag element will render.\n * Default value is `span`\n */\n as?: 'div' | 'span' | 'nav';\n /** Content should be composed of other Taco elements */\n children: React.ReactNode;\n /**\n * Define orientation of grouping.\n * @defaultValue horizontal\n */\n orientation?: Orientation;\n};\n\nexport const Group = React.forwardRef(function Group(props: GroupProps, ref: React.Ref<HTMLDivElement>) {\n const { as: Tag = 'span', orientation = 'horizontal', ...otherProps } = props;\n const className = cn('flex gap-2', { 'flex-col ': orientation === 'vertical' }, props.className);\n return <Tag {...otherProps} className={className} data-taco=\"group\" ref={ref} />;\n});\n"],"names":["Group","React","props","ref","as","Tag","orientation","otherProps","className","cn"],"mappings":";;;MAmBaA,KAAK,gBAAGC,UAAgB,CAAC,SAASD,KAAK,CAACE,KAAiB,EAAEC,GAA8B;EAClG,MAAM;IAAEC,EAAE,EAAEC,GAAG,GAAG,MAAM;IAAEC,WAAW,GAAG,YAAY;IAAE,GAAGC;GAAY,GAAGL,KAAK;EAC7E,MAAMM,SAAS,GAAGC,EAAE,CAAC,YAAY,EAAE;IAAE,WAAW,EAAEH,WAAW,KAAK;GAAY,EAAEJ,KAAK,CAACM,SAAS,CAAC;EAChG,oBAAOP,cAACI,GAAG,oBAAKE,UAAU;IAAEC,SAAS,EAAEA,SAAS;iBAAY,OAAO;IAACL,GAAG,EAAEA;KAAO;AACpF,CAAC;;;;"}
@@ -2,9 +2,9 @@ import React__default from 'react';
2
2
  import { Icon } from '../../Icon/Icon.js';
3
3
  import { useLocalization } from '../../Provider/Localization.js';
4
4
  import { Button } from '../../Button/Button.js';
5
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
5
6
  import { Root, Trigger, Content } from '@radix-ui/react-popover';
6
7
  import { createCustomKeyboardEvent } from '../../../utils/input.js';
7
- import { useControllableState } from '@radix-ui/react-use-controllable-state';
8
8
  import { SearchInput } from '../../SearchInput/SearchInput.js';
9
9
  import { Root as Root$1 } from '../../../primitives/Collection/components/Root.js';
10
10
  import '../../../primitives/Collection/Collection.js';
@@ -2,9 +2,9 @@ import React__default from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../../Provider/Localization.js';
4
4
  import { Button } from '../../Button/Button.js';
5
- import { useBoundingClientRectListener } from '../../../hooks/useBoundingClientRectListener.js';
6
5
  import { useMergedRef } from '../../../hooks/useMergedRef.js';
7
6
  import { Menu } from '../../Menu/Menu.js';
7
+ import { useBoundingClientRectListener } from '../../../hooks/useBoundingClientRectListener.js';
8
8
  import { getLinkClasses } from './Link.js';
9
9
  import { Portal } from '@radix-ui/react-portal';
10
10
 
@@ -1,9 +1,9 @@
1
1
  import { forwardRef, createElement, useRef, memo, cloneElement } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { Icon } from '../Icon/Icon.js';
4
+ import { useMergedRef } from '../../hooks/useMergedRef.js';
4
5
  import { getButtonStateClasses, getInputClasses } from './util.js';
5
6
  import { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener.js';
6
- import { useMergedRef } from '../../hooks/useMergedRef.js';
7
7
 
8
8
  const validSetSelectionRangeTypes = ['text', 'search', 'url', 'tel', 'password'];
9
9
  const InputWithoutDeprecatedFeatures = /*#__PURE__*/forwardRef(function InputWithoutDeprecatedFeatures(props, ref) {
@@ -1,9 +1,9 @@
1
1
  import { forwardRef, useMemo, createRef, useEffect, createElement } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../Provider/Localization.js';
4
+ import { useMergedRef } from '../../hooks/useMergedRef.js';
4
5
  import { Checkbox } from '../Checkbox/Checkbox.js';
5
6
  import { getInputClasses } from '../Input/util.js';
6
- import { useMergedRef } from '../../hooks/useMergedRef.js';
7
7
  import { getNextIndexFromKey } from '../../utils/hooks/useListKeyboardNavigation.js';
8
8
  import { useListScrollTo } from '../../utils/hooks/useListScrollTo.js';
9
9
  import { Spinner } from '../Spinner/Spinner.js';
@@ -1,6 +1,6 @@
1
1
  import { useMemo, useEffect } from 'react';
2
- import { v4 } from 'uuid';
3
2
  import { useMergedRef } from '../../hooks/useMergedRef.js';
3
+ import { v4 } from 'uuid';
4
4
  import { useFlattenedData, getIndexFromValue, getActiveDescendant, setInputValueByRef, findByValue, sanitizeItem } from './util.js';
5
5
  import { useTypeahead } from './useTypeahead.js';
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { useMemo, useState, useEffect } from 'react';
2
2
  import { useLocalization } from '../Provider/Localization.js';
3
- import { v4 } from 'uuid';
4
3
  import { useMergedRef } from '../../hooks/useMergedRef.js';
4
+ import { v4 } from 'uuid';
5
5
  import { getIndexFromValue, getSelectedIndexesFromValue, setInputValueByRef, getActiveDescendant, findByValue } from './util.js';
6
6
  import { useTypeahead } from './useTypeahead.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { forwardRef, useState, useMemo, createElement } from 'react';
2
- import { MenuContext } from './Context.js';
3
- import { useControllableState } from '@radix-ui/react-use-controllable-state';
4
2
  import { Root } from '@radix-ui/react-dropdown-menu';
3
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
4
+ import { MenuContext } from './Context.js';
5
5
  import { Content } from './components/Content.js';
6
6
  import { Item } from './components/Item.js';
7
7
  import { Link } from './components/Link.js';
@@ -1,8 +1,8 @@
1
1
  import { forwardRef, createElement } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useMergedRef } from '../../../hooks/useMergedRef.js';
4
- import { useCurrentMenu } from '../Context.js';
5
4
  import { Portal, Content as Content$1 } from '@radix-ui/react-dropdown-menu';
5
+ import { useCurrentMenu } from '../Context.js';
6
6
 
7
7
  const Content = /*#__PURE__*/forwardRef(function MenuContent(props, ref) {
8
8
  const internalRef = useMergedRef(ref);
@@ -1,7 +1,7 @@
1
1
  import { forwardRef, createElement } from 'react';
2
2
  import cn from 'classnames';
3
- import { useCurrentMenu } from '../Context.js';
4
3
  import { Label } from '@radix-ui/react-dropdown-menu';
4
+ import { useCurrentMenu } from '../Context.js';
5
5
 
6
6
  const Header = /*#__PURE__*/forwardRef(function MenuHeader(props, ref) {
7
7
  const menu = useCurrentMenu();
@@ -1,8 +1,8 @@
1
1
  import { forwardRef, createElement, useEffect } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { Icon as Icon$1 } from '../../Icon/Icon.js';
4
- import { useCurrentMenu } from '../Context.js';
5
4
  import { Item as Item$1 } from '@radix-ui/react-dropdown-menu';
5
+ import { useCurrentMenu } from '../Context.js';
6
6
 
7
7
  const Icon = ({
8
8
  name
@@ -1,6 +1,6 @@
1
1
  import { forwardRef, createElement } from 'react';
2
- import { useCurrentMenu } from '../Context.js';
3
2
  import { Item } from '@radix-ui/react-dropdown-menu';
3
+ import { useCurrentMenu } from '../Context.js';
4
4
  import { useItemStyling, Icon } from './Item.js';
5
5
 
6
6
  const Link = /*#__PURE__*/forwardRef(function MenuLink(props, ref) {
@@ -1,7 +1,7 @@
1
1
  import { forwardRef, useEffect, createElement } from 'react';
2
2
  import { useMergedRef } from '../../../hooks/useMergedRef.js';
3
- import { useCurrentMenu } from '../Context.js';
4
3
  import { Trigger as Trigger$1 } from '@radix-ui/react-dropdown-menu';
4
+ import { useCurrentMenu } from '../Context.js';
5
5
 
6
6
  const Trigger = /*#__PURE__*/forwardRef(function MenuTrigger(props, ref) {
7
7
  const menu = useCurrentMenu();
@@ -1,8 +1,8 @@
1
1
  import { useState, useMemo, useRef, useEffect, createElement, Fragment, cloneElement } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../Provider/Localization.js';
4
- import { v4 } from 'uuid';
5
4
  import { useMergedRef } from '../../hooks/useMergedRef.js';
5
+ import { v4 } from 'uuid';
6
6
  import { createCustomEvent } from '../../utils/input.js';
7
7
  import { useFlattenedData, findByValue, setInputValueByRef, sanitizeItem } from '../Listbox/util.js';
8
8
 
@@ -1,11 +1,11 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../Provider/Localization.js';
4
+ import { useMergedRef } from '../../hooks/useMergedRef.js';
5
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
4
6
  import { Root, Trigger, Portal, Content } from '@radix-ui/react-popover';
5
7
  import { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener.js';
6
- import { useMergedRef } from '../../hooks/useMergedRef.js';
7
8
  import { createCustomKeyboardEvent } from '../../utils/input.js';
8
- import { useControllableState } from '@radix-ui/react-use-controllable-state';
9
9
  import { isAriaDirectionKey } from '../../utils/aria.js';
10
10
  import { Root as Root$1, createListboxValueSetter } from '../../primitives/Listbox2/components/Root.js';
11
11
  import '../../primitives/Listbox2/components/Option.js';
@@ -4,11 +4,11 @@ import { AVAILABLE_COLORS, getSubtleColorShadeClasses } from '../../../utils/tai
4
4
  import { Icon } from '../../Icon/Icon.js';
5
5
  import { useLocalization } from '../../Provider/Localization.js';
6
6
  import { Button } from '../../Button/Button.js';
7
+ import { Group } from '../../Group/Group.js';
8
+ import { Root, Item, Indicator } from '@radix-ui/react-radio-group';
7
9
  import { Input } from '../../Input/Input.js';
8
10
  import { Popover } from '../../Popover/Popover.js';
9
- import { Group } from '../../Group/Group.js';
10
11
  import { Field } from '../../Field/Field.js';
11
- import { Root, Item, Indicator } from '@radix-ui/react-radio-group';
12
12
  import { useSelect2Context } from './Context.js';
13
13
  import { _catch } from '../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
14
14
 
@@ -3,8 +3,8 @@ import cn from 'classnames';
3
3
  import { Icon } from '../../Icon/Icon.js';
4
4
  import { Badge } from '../../Badge/Badge.js';
5
5
  import { Tooltip } from '../../Tooltip/Tooltip.js';
6
- import { getInputClasses } from '../../Input/util.js';
7
6
  import { useMergedRef } from '../../../hooks/useMergedRef.js';
7
+ import { getInputClasses } from '../../Input/util.js';
8
8
  import { ScrollArea } from '../../ScrollArea/ScrollArea.js';
9
9
  import { Tag } from '../../Tag/Tag.js';
10
10
  import { useSelect2Context } from './Context.js';
@@ -1,8 +1,8 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../../Provider/Localization.js';
4
- import { useBoundingClientRectListener } from '../../../hooks/useBoundingClientRectListener.js';
5
4
  import { useMergedRef } from '../../../hooks/useMergedRef.js';
5
+ import { useBoundingClientRectListener } from '../../../hooks/useBoundingClientRectListener.js';
6
6
  import { useTable } from '../hooks/useTable.js';
7
7
  import { Row } from '../util/renderRow.js';
8
8
  import { BaseTable, DefaultEmptyState } from './BaseTable.js';
@@ -1,6 +1,6 @@
1
1
  import React__default from 'react';
2
- import { getNextIndexFromKey } from '../../../utils/hooks/useListKeyboardNavigation.js';
3
2
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
3
+ import { getNextIndexFromKey } from '../../../utils/hooks/useListKeyboardNavigation.js';
4
4
  import { sanitizeRowProps } from '../util.js';
5
5
 
6
6
  const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
@@ -3,8 +3,8 @@ import cn from 'classnames';
3
3
  import { Icon } from '../../../Icon/Icon.js';
4
4
  import { useLocalization } from '../../../Provider/Localization.js';
5
5
  import { Button } from '../../../Button/Button.js';
6
- import { Popover } from '../../../Popover/Popover.js';
7
6
  import { Group } from '../../../Group/Group.js';
7
+ import { Popover } from '../../../Popover/Popover.js';
8
8
  import { useGlobalKeyboardShortcut } from '../../../../hooks/useGlobalKeyboardShortcut.js';
9
9
  import { Shortcut } from '../../../Shortcut/Shortcut.js';
10
10
  import { isInternalColumn } from '../../utilities/columns.js';
@@ -3,8 +3,8 @@ import cn from 'classnames';
3
3
  import { Icon } from '../../Icon/Icon.js';
4
4
  import { Tooltip } from '../../Tooltip/Tooltip.js';
5
5
  import { IconButton } from '../../IconButton/IconButton.js';
6
- import { Checkbox } from '../../Checkbox/Checkbox.js';
7
6
  import { Menu } from '../../Menu/Menu.js';
7
+ import { Checkbox } from '../../Checkbox/Checkbox.js';
8
8
  import { Shortcut } from '../../Shortcut/Shortcut.js';
9
9
  import { useRowContext } from '../components/row/Context.js';
10
10
 
@@ -0,0 +1,48 @@
1
+ import React__default from 'react';
2
+
3
+ const useIntersectionObserver = (ref, offset) => {
4
+ const [intersectedIndexes, setIntersectedIndexes] = React__default.useState({});
5
+ const handleIntersection = (entries, observer) => {
6
+ if (observer.root) {
7
+ const children = Array.from(observer.root.children);
8
+ const map = {};
9
+ entries.forEach(entry => {
10
+ // entries only contains the items being intersected not all children of the ref
11
+ // so use root and the the entry being intersected to find its real index
12
+ // on first mount this is different - all children are present
13
+ map[children.indexOf(entry.target)] = entry.isIntersecting;
14
+ });
15
+ setIntersectedIndexes(prev => ({
16
+ ...prev,
17
+ ...map
18
+ }));
19
+ }
20
+ };
21
+ const intersectedChildIndex = React__default.useMemo(() => {
22
+ const index = Object.values(intersectedIndexes).indexOf(false);
23
+ return index > -1 ? index : undefined;
24
+ }, [intersectedIndexes]);
25
+ const hasRootMargin = intersectedChildIndex !== undefined && offset;
26
+ React__default.useEffect(() => {
27
+ const observer = new IntersectionObserver(handleIntersection, {
28
+ root: ref.current,
29
+ // offset the button, but only after the first item has been intersected
30
+ rootMargin: hasRootMargin ? `0px -${offset}px 0px 0px` : undefined,
31
+ threshold: 1
32
+ });
33
+ if (observer.root) {
34
+ Array.from(observer.root.children).forEach(item => {
35
+ if (item.getAttribute('data-intersection-observer') !== 'ignore') {
36
+ observer.observe(item);
37
+ }
38
+ });
39
+ }
40
+ return () => {
41
+ observer.disconnect();
42
+ };
43
+ }, [hasRootMargin]);
44
+ return intersectedChildIndex;
45
+ };
46
+
47
+ export { useIntersectionObserver };
48
+ //# sourceMappingURL=useIntersectionObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIntersectionObserver.js","sources":["../../../../../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIntersectionObserver = (ref: React.RefObject<HTMLElement>, offset?: number) => {\n const [intersectedIndexes, setIntersectedIndexes] = React.useState({});\n\n const handleIntersection = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\n if (observer.root) {\n const children = Array.from((observer.root as Element).children);\n const map = {};\n\n entries.forEach(entry => {\n // entries only contains the items being intersected not all children of the ref\n // so use root and the the entry being intersected to find its real index\n // on first mount this is different - all children are present\n map[children.indexOf(entry.target)] = entry.isIntersecting;\n });\n\n setIntersectedIndexes(prev => ({ ...prev, ...map }));\n }\n };\n\n const intersectedChildIndex = React.useMemo(() => {\n const index = Object.values(intersectedIndexes).indexOf(false);\n return index > -1 ? index : undefined;\n }, [intersectedIndexes]);\n\n const hasRootMargin = intersectedChildIndex !== undefined && offset;\n\n React.useEffect(() => {\n const observer = new IntersectionObserver(handleIntersection, {\n root: ref.current,\n // offset the button, but only after the first item has been intersected\n rootMargin: hasRootMargin ? `0px -${offset}px 0px 0px` : undefined,\n threshold: 1,\n });\n\n if (observer.root) {\n Array.from(observer.root.children).forEach(item => {\n if (item.getAttribute('data-intersection-observer') !== 'ignore') {\n observer.observe(item);\n }\n });\n }\n\n return () => {\n observer.disconnect();\n };\n }, [hasRootMargin]);\n\n return intersectedChildIndex;\n};\n"],"names":["useIntersectionObserver","ref","offset","intersectedIndexes","setIntersectedIndexes","React","useState","handleIntersection","entries","observer","root","children","Array","from","map","forEach","entry","indexOf","target","isIntersecting","prev","intersectedChildIndex","useMemo","index","Object","values","undefined","hasRootMargin","useEffect","IntersectionObserver","current","rootMargin","threshold","item","getAttribute","observe","disconnect"],"mappings":";;MAEaA,uBAAuB,GAAG,CAACC,GAAiC,EAAEC,MAAe;EACtF,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,EAAE,CAAC;EAEtE,MAAMC,kBAAkB,GAAG,CAACC,OAAoC,EAAEC,QAA8B;IAC5F,IAAIA,QAAQ,CAACC,IAAI,EAAE;MACf,MAAMC,QAAQ,GAAGC,KAAK,CAACC,IAAI,CAAEJ,QAAQ,CAACC,IAAgB,CAACC,QAAQ,CAAC;MAChE,MAAMG,GAAG,GAAG,EAAE;MAEdN,OAAO,CAACO,OAAO,CAACC,KAAK;;;;QAIjBF,GAAG,CAACH,QAAQ,CAACM,OAAO,CAACD,KAAK,CAACE,MAAM,CAAC,CAAC,GAAGF,KAAK,CAACG,cAAc;OAC7D,CAAC;MAEFf,qBAAqB,CAACgB,IAAI,KAAK;QAAE,GAAGA,IAAI;QAAE,GAAGN;OAAK,CAAC,CAAC;;GAE3D;EAED,MAAMO,qBAAqB,GAAGhB,cAAK,CAACiB,OAAO,CAAC;IACxC,MAAMC,KAAK,GAAGC,MAAM,CAACC,MAAM,CAACtB,kBAAkB,CAAC,CAACc,OAAO,CAAC,KAAK,CAAC;IAC9D,OAAOM,KAAK,GAAG,CAAC,CAAC,GAAGA,KAAK,GAAGG,SAAS;GACxC,EAAE,CAACvB,kBAAkB,CAAC,CAAC;EAExB,MAAMwB,aAAa,GAAGN,qBAAqB,KAAKK,SAAS,IAAIxB,MAAM;EAEnEG,cAAK,CAACuB,SAAS,CAAC;IACZ,MAAMnB,QAAQ,GAAG,IAAIoB,oBAAoB,CAACtB,kBAAkB,EAAE;MAC1DG,IAAI,EAAET,GAAG,CAAC6B,OAAO;;MAEjBC,UAAU,EAAEJ,aAAa,WAAWzB,kBAAkB,GAAGwB,SAAS;MAClEM,SAAS,EAAE;KACd,CAAC;IAEF,IAAIvB,QAAQ,CAACC,IAAI,EAAE;MACfE,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAACC,IAAI,CAACC,QAAQ,CAAC,CAACI,OAAO,CAACkB,IAAI;QAC3C,IAAIA,IAAI,CAACC,YAAY,CAAC,4BAA4B,CAAC,KAAK,QAAQ,EAAE;UAC9DzB,QAAQ,CAAC0B,OAAO,CAACF,IAAI,CAAC;;OAE7B,CAAC;;IAGN,OAAO;MACHxB,QAAQ,CAAC2B,UAAU,EAAE;KACxB;GACJ,EAAE,CAACT,aAAa,CAAC,CAAC;EAEnB,OAAON,qBAAqB;AAChC;;;;"}
@@ -13,11 +13,16 @@ export { Base, IconButton } from './components/IconButton/IconButton.js';
13
13
  export { LocalizationContext, LocalizationProvider, defaultLocalisationTexts, useLocalization } from './components/Provider/Localization.js';
14
14
  export { Banner } from './components/Banner/Banner.js';
15
15
  export { Button } from './components/Button/Button.js';
16
+ export { useMergedRef } from './hooks/useMergedRef.js';
17
+ export { Group } from './components/Group/Group.js';
18
+ export { RadioGroup, findByValue, getRadioGroupItemValueAsString, useRadioGroup } from './components/RadioGroup/RadioGroup.js';
19
+ export { Menu } from './components/Menu/Menu.js';
20
+ export { useIntersectionObserver } from './hooks/useIntersectionObserver.js';
21
+ export { ButtonGroup } from './components/ButtonGroup/ButtonGroup.js';
16
22
  export { Calendar } from './components/Calendar/Calendar.js';
17
23
  export { Card } from './components/Card/Card.js';
18
24
  export { Checkbox } from './components/Checkbox/Checkbox.js';
19
25
  export { useBoundingClientRectListener } from './hooks/useBoundingClientRectListener.js';
20
- export { useMergedRef } from './hooks/useMergedRef.js';
21
26
  export { Input } from './components/Input/Input.js';
22
27
  export { getNextIndexFromKey, useListKeyboardNavigation } from './utils/hooks/useListKeyboardNavigation.js';
23
28
  export { useListScrollTo } from './utils/hooks/useListScrollTo.js';
@@ -27,7 +32,6 @@ export { format, isWeakEqual, parseFromCustomString, parseFromISOString } from '
27
32
  export { Popover } from './components/Popover/Popover.js';
28
33
  export { Datepicker } from './components/Datepicker/Datepicker.js';
29
34
  export { Dialog } from './components/Dialog/Dialog.js';
30
- export { Group } from './components/Group/Group.js';
31
35
  export { Drawer } from './components/Drawer/Drawer.js';
32
36
  export { Field } from './components/Field/Field.js';
33
37
  export { Form } from './components/Form/Form.js';
@@ -35,8 +39,6 @@ export { Hanger, Title } from './components/Hanger/Hanger.js';
35
39
  export { HoverCard } from './components/HoverCard/HoverCard.js';
36
40
  export { SearchInput } from './components/SearchInput/SearchInput.js';
37
41
  export { Listbox, MultiListbox } from './components/Listbox/Listbox.js';
38
- export { RadioGroup, findByValue, getRadioGroupItemValueAsString, useRadioGroup } from './components/RadioGroup/RadioGroup.js';
39
- export { Menu } from './components/Menu/Menu.js';
40
42
  export { Treeview } from './components/Treeview/Treeview.js';
41
43
  export { useDropTarget } from './utils/hooks/useDropTarget.js';
42
44
  export { Navigation } from './components/Navigation/Navigation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const useIntersectionObserver: (ref: React.RefObject<HTMLElement>, offset?: number | undefined) => number | undefined;
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './components/Badge/Badge';
7
7
  export * from './components/BadgeIcon/BadgeIcon';
8
8
  export * from './components/Banner/Banner';
9
9
  export * from './components/Button/Button';
10
+ export * from './components/ButtonGroup/ButtonGroup';
10
11
  export * from './components/Calendar/Calendar';
11
12
  export * from './components/Card/Card';
12
13
  export * from './components/Checkbox/Checkbox';
@@ -55,6 +56,7 @@ export * from './utils/date';
55
56
  export * from './utils/mergeRefs';
56
57
  export * from './hooks/useBoundaryOverflowDetection';
57
58
  export * from './hooks/useBoundingClientRectListener';
59
+ export * from './hooks/useIntersectionObserver';
58
60
  export * from './hooks/useIsLargeScreen';
59
61
  export * from './hooks/useMatchMedia';
60
62
  export * from './hooks/useMergedRef';