@wallarm-org/design-system 1.28.2-rc-fix-table-window-scroll-root.2 → 1.30.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 (105) hide show
  1. package/dist/components/Avatar/Avatar.d.ts +32 -0
  2. package/dist/components/Avatar/Avatar.figma.d.ts +1 -0
  3. package/dist/components/Avatar/Avatar.figma.js +27 -0
  4. package/dist/components/Avatar/Avatar.js +42 -0
  5. package/dist/components/Avatar/AvatarFallback.d.ts +11 -0
  6. package/dist/components/Avatar/AvatarFallback.js +25 -0
  7. package/dist/components/Avatar/AvatarImage.d.ts +9 -0
  8. package/dist/components/Avatar/AvatarImage.js +18 -0
  9. package/dist/components/Avatar/AvatarOverlay.d.ts +11 -0
  10. package/dist/components/Avatar/AvatarOverlay.js +22 -0
  11. package/dist/components/Avatar/classes.d.ts +6 -0
  12. package/dist/components/Avatar/classes.js +17 -0
  13. package/dist/components/Avatar/index.d.ts +4 -0
  14. package/dist/components/Avatar/index.js +4 -0
  15. package/dist/components/FileUpload/FileUploadTrigger.d.ts +5 -0
  16. package/dist/components/FileUpload/FileUploadTrigger.js +18 -5
  17. package/dist/components/FileUpload/index.d.ts +1 -0
  18. package/dist/components/FileUpload/index.js +1 -0
  19. package/dist/components/FileUpload/useFilePreviewUrl.d.ts +6 -0
  20. package/dist/components/FileUpload/useFilePreviewUrl.js +14 -0
  21. package/dist/components/FilterDropdown/FilterDropdown.d.ts +58 -0
  22. package/dist/components/FilterDropdown/FilterDropdown.js +168 -0
  23. package/dist/components/FilterDropdown/FilterDropdownAllOption.d.ts +14 -0
  24. package/dist/components/FilterDropdown/FilterDropdownAllOption.js +25 -0
  25. package/dist/components/FilterDropdown/FilterDropdownClear.d.ts +12 -0
  26. package/dist/components/FilterDropdown/FilterDropdownClear.js +33 -0
  27. package/dist/components/FilterDropdown/FilterDropdownContent.d.ts +13 -0
  28. package/dist/components/FilterDropdown/FilterDropdownContent.js +57 -0
  29. package/dist/components/FilterDropdown/FilterDropdownContext.d.ts +60 -0
  30. package/dist/components/FilterDropdown/FilterDropdownContext.js +21 -0
  31. package/dist/components/FilterDropdown/FilterDropdownEmpty.d.ts +9 -0
  32. package/dist/components/FilterDropdown/FilterDropdownEmpty.js +21 -0
  33. package/dist/components/FilterDropdown/FilterDropdownFooter.d.ts +9 -0
  34. package/dist/components/FilterDropdown/FilterDropdownFooter.js +19 -0
  35. package/dist/components/FilterDropdown/FilterDropdownFooterClear.d.ts +9 -0
  36. package/dist/components/FilterDropdown/FilterDropdownFooterClear.js +40 -0
  37. package/dist/components/FilterDropdown/FilterDropdownGroup.d.ts +5 -0
  38. package/dist/components/FilterDropdown/FilterDropdownGroup.js +8 -0
  39. package/dist/components/FilterDropdown/FilterDropdownGroupLabel.d.ts +4 -0
  40. package/dist/components/FilterDropdown/FilterDropdownGroupLabel.js +8 -0
  41. package/dist/components/FilterDropdown/FilterDropdownOption.d.ts +15 -0
  42. package/dist/components/FilterDropdown/FilterDropdownOption.js +32 -0
  43. package/dist/components/FilterDropdown/FilterDropdownSearch.d.ts +12 -0
  44. package/dist/components/FilterDropdown/FilterDropdownSearch.js +38 -0
  45. package/dist/components/FilterDropdown/FilterDropdownSelected.d.ts +16 -0
  46. package/dist/components/FilterDropdown/FilterDropdownSelected.js +38 -0
  47. package/dist/components/FilterDropdown/FilterDropdownTrigger.d.ts +16 -0
  48. package/dist/components/FilterDropdown/FilterDropdownTrigger.js +139 -0
  49. package/dist/components/FilterDropdown/classes.d.ts +16 -0
  50. package/dist/components/FilterDropdown/classes.js +43 -0
  51. package/dist/components/FilterDropdown/index.d.ts +15 -0
  52. package/dist/components/FilterDropdown/index.js +15 -0
  53. package/dist/components/FilterDropdown/lib/index.d.ts +1 -0
  54. package/dist/components/FilterDropdown/lib/index.js +1 -0
  55. package/dist/components/FilterDropdown/lib/values.d.ts +59 -0
  56. package/dist/components/FilterDropdown/lib/values.js +58 -0
  57. package/dist/components/NavRail/NavRailItem.d.ts +1 -1
  58. package/dist/components/NavRail/NavRailItem.js +9 -12
  59. package/dist/components/Select/Select.d.ts +1 -1
  60. package/dist/components/Select/SelectContent.d.ts +2 -1
  61. package/dist/components/Select/SelectContent.js +3 -2
  62. package/dist/components/Select/SelectEmptyState.d.ts +1 -0
  63. package/dist/components/Select/SelectEmptyState.js +2 -1
  64. package/dist/components/Select/SelectFooter.d.ts +7 -2
  65. package/dist/components/Select/SelectFooter.js +6 -3
  66. package/dist/components/Select/SelectGroup.d.ts +8 -2
  67. package/dist/components/Select/SelectGroup.js +3 -2
  68. package/dist/components/Select/SelectGroupLabel.d.ts +5 -2
  69. package/dist/components/Select/SelectGroupLabel.js +2 -2
  70. package/dist/components/Select/SelectOption.js +1 -1
  71. package/dist/components/Select/SelectOptionHint.d.ts +11 -0
  72. package/dist/components/Select/SelectOptionHint.js +15 -0
  73. package/dist/components/Select/SelectPositioner.d.ts +13 -3
  74. package/dist/components/Select/SelectPositioner.js +2 -1
  75. package/dist/components/Select/SelectSearchInput.d.ts +5 -2
  76. package/dist/components/Select/SelectSearchInput.js +11 -1
  77. package/dist/components/Select/classes.d.ts +3 -0
  78. package/dist/components/Select/classes.js +13 -0
  79. package/dist/components/Select/index.d.ts +4 -2
  80. package/dist/components/Select/index.js +2 -0
  81. package/dist/components/Table/TableBody/TableBodyVirtualizedCore.js +1 -1
  82. package/dist/components/Table/TableBody/TableBodyVirtualizedWindow.js +8 -26
  83. package/dist/components/Table/TableInner/TableInnerWindow.js +2 -7
  84. package/dist/components/Table/hooks/index.d.ts +0 -1
  85. package/dist/components/Table/hooks/index.js +0 -1
  86. package/dist/components/Table/hooks/infiniteScroll/useInfiniteScroll.d.ts +2 -4
  87. package/dist/components/Table/hooks/infiniteScroll/useInfiniteScroll.js +1 -4
  88. package/dist/components/Table/hooks/infiniteScroll/usePrependScrollAnchor.d.ts +1 -4
  89. package/dist/components/Table/hooks/infiniteScroll/usePrependScrollAnchor.js +11 -13
  90. package/dist/components/Table/hooks/infiniteScroll/useScrollEdge.d.ts +1 -4
  91. package/dist/components/Table/hooks/infiniteScroll/useScrollEdge.js +18 -6
  92. package/dist/components/Table/lib/index.d.ts +0 -1
  93. package/dist/components/Table/lib/index.js +0 -1
  94. package/dist/components/Table/types.d.ts +1 -4
  95. package/dist/index.d.ts +4 -2
  96. package/dist/index.js +4 -2
  97. package/dist/metadata/components.json +16122 -9667
  98. package/dist/theme/semantic.css +2 -0
  99. package/dist/utils/getInitials.d.ts +5 -0
  100. package/dist/utils/getInitials.js +13 -0
  101. package/package.json +1 -1
  102. package/dist/components/Table/hooks/useWindowScrollRoot.d.ts +0 -14
  103. package/dist/components/Table/hooks/useWindowScrollRoot.js +0 -35
  104. package/dist/components/Table/lib/scrollRoot.d.ts +0 -24
  105. package/dist/components/Table/lib/scrollRoot.js +0 -22
@@ -1,7 +1,10 @@
1
- import type { FC, HTMLAttributes } from 'react';
1
+ import type { FC, InputHTMLAttributes, Ref } from 'react';
2
2
  import { type TestableProps } from '../../utils/testId';
3
- export interface SelectSearchInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onChange' | 'color'>, TestableProps {
3
+ export interface SelectSearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'children' | 'onChange' | 'color' | 'size' | 'type' | 'value'>, TestableProps {
4
4
  value: string;
5
5
  onChange: (value: string) => void;
6
+ /** Called when the built-in clear button empties the field, before `onChange('')`. */
7
+ onClear?: () => void;
8
+ ref?: Ref<HTMLInputElement>;
6
9
  }
7
10
  export declare const SelectSearchInput: FC<SelectSearchInputProps>;
@@ -1,12 +1,22 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { useTestId } from "../../utils/testId.js";
3
3
  import { SearchInput } from "../SearchInput/index.js";
4
- const SelectSearchInput = ({ value, onChange, 'data-testid': testIdProp, ...rest })=>{
4
+ const INPUT_OWNED_KEYS = new Set([
5
+ ' ',
6
+ 'Home',
7
+ 'End'
8
+ ]);
9
+ const SelectSearchInput = ({ value, onChange, onKeyDown, 'data-testid': testIdProp, ...rest })=>{
5
10
  const testId = useTestId('search-input', testIdProp);
11
+ const handleKeyDown = (event)=>{
12
+ onKeyDown?.(event);
13
+ if (INPUT_OWNED_KEYS.has(event.key)) event.stopPropagation();
14
+ };
6
15
  return /*#__PURE__*/ jsx(SearchInput, {
7
16
  ...rest,
8
17
  value: value,
9
18
  onChange: onChange,
19
+ onKeyDown: handleKeyDown,
10
20
  "data-testid": testId
11
21
  });
12
22
  };
@@ -0,0 +1,3 @@
1
+ export declare const selectFooterVariants: (props?: ({
2
+ variant?: "actions" | "default" | null | undefined;
3
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -0,0 +1,13 @@
1
+ import { cva } from "class-variance-authority";
2
+ const selectFooterVariants = cva('shrink-0 border-t', {
3
+ variants: {
4
+ variant: {
5
+ default: 'bg-component-outline-button-bg py-8 px-16 border-border-primary',
6
+ actions: 'flex items-center justify-end gap-8 p-8 border-border-primary-light'
7
+ }
8
+ },
9
+ defaultVariants: {
10
+ variant: 'default'
11
+ }
12
+ });
13
+ export { selectFooterVariants };
@@ -1,20 +1,22 @@
1
1
  export { createListCollection } from '@ark-ui/react/collection';
2
+ export { selectFooterVariants } from './classes';
2
3
  export { Select } from './Select';
3
4
  export { SelectButton } from './SelectButton';
4
5
  export { SelectButtonTag, SelectButtonTagValue } from './SelectButtonTag';
5
6
  export { SelectClearTrigger } from './SelectClearTrigger';
6
7
  export { SelectContent } from './SelectContent';
7
8
  export { SelectEmptyState, type SelectEmptyStateProps } from './SelectEmptyState';
8
- export { SelectFooter } from './SelectFooter';
9
+ export { SelectFooter, type SelectFooterProps } from './SelectFooter';
9
10
  export { SelectGroup } from './SelectGroup';
10
11
  export { SelectGroupLabel } from './SelectGroupLabel';
11
12
  export { SelectHeader } from './SelectHeader';
12
13
  export { SelectInput } from './SelectInput';
13
14
  export { SelectOption } from './SelectOption';
14
15
  export { SelectOptionDescription } from './SelectOptionDescription';
16
+ export { SelectOptionHint, type SelectOptionHintProps } from './SelectOptionHint';
15
17
  export { SelectOptionIndicator } from './SelectOptionIndicator';
16
18
  export { SelectOptionText } from './SelectOptionText';
17
- export { SelectPositioner } from './SelectPositioner';
19
+ export { SelectPositioner, type SelectPositionerProps } from './SelectPositioner';
18
20
  export { SelectSearchInput, type SelectSearchInputProps } from './SelectSearchInput';
19
21
  export { SelectSeparator, type SelectSeparatorProps } from './SelectSeparator';
20
22
  export type { SelectDataItem } from './types';
@@ -1,4 +1,5 @@
1
1
  export { createListCollection } from "@ark-ui/react/collection";
2
+ export { selectFooterVariants } from "./classes.js";
2
3
  export { Select } from "./Select.js";
3
4
  export { SelectButton } from "./SelectButton.js";
4
5
  export { SelectButtonTag, SelectButtonTagValue } from "./SelectButtonTag/index.js";
@@ -12,6 +13,7 @@ export { SelectHeader } from "./SelectHeader.js";
12
13
  export { SelectInput } from "./SelectInput/index.js";
13
14
  export { SelectOption } from "./SelectOption.js";
14
15
  export { SelectOptionDescription } from "./SelectOptionDescription.js";
16
+ export { SelectOptionHint } from "./SelectOptionHint.js";
15
17
  export { SelectOptionIndicator } from "./SelectOptionIndicator.js";
16
18
  export { SelectOptionText } from "./SelectOptionText.js";
17
19
  export { SelectPositioner } from "./SelectPositioner.js";
@@ -47,7 +47,7 @@ const TableBodyVirtualizedCore = ({ tbodyRef, virtualizer })=>{
47
47
  virtualRows.length > 0 && /*#__PURE__*/ jsx(Tr, {
48
48
  children: /*#__PURE__*/ jsx(Td, {
49
49
  style: {
50
- height: `${totalSize + scrollMargin - (virtualRows[virtualRows.length - 1]?.end ?? 0)}px`,
50
+ height: `${totalSize - (virtualRows[virtualRows.length - 1]?.end ?? 0)}px`,
51
51
  padding: 0,
52
52
  border: 'none'
53
53
  },
@@ -1,39 +1,20 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { useCallback, useContext, useEffect, useLayoutEffect, useRef } from "react";
3
- import { elementScroll, observeElementOffset, observeElementRect, observeWindowOffset, observeWindowRect, useVirtualizer } from "@tanstack/react-virtual";
4
- import { WindowScrollRootContext } from "../hooks/useWindowScrollRoot.js";
5
- import { TABLE_VIRTUALIZATION_OVERSCAN, getOffsetTopInScrollRoot, getRowKey, getScrollMetrics } from "../lib/index.js";
2
+ import { useCallback, useEffect } from "react";
3
+ import { useWindowVirtualizer } from "@tanstack/react-virtual";
4
+ import { TABLE_VIRTUALIZATION_OVERSCAN, getRowKey } from "../lib/index.js";
6
5
  import { useTableContext } from "../TableContext/index.js";
6
+ import { getDocumentOffsetTop } from "./lib/getDocumentOffsetTop.js";
7
7
  import { measureRowElement } from "./lib/measureRowElement.js";
8
8
  import { TableBodyVirtualizedCore } from "./TableBodyVirtualizedCore.js";
9
9
  import { useResetVirtualizerOnDataChange } from "./useResetVirtualizerOnDataChange.js";
10
10
  import { useSmoothScrollOnSort } from "./useSmoothScrollOnSort.js";
11
- const isWindowRoot = (instance)=>instance.scrollElement === window;
12
- const observeRootRect = (instance, cb)=>isWindowRoot(instance) ? observeWindowRect(instance, cb) : observeElementRect(instance, cb);
13
- const observeRootOffset = (instance, cb)=>isWindowRoot(instance) ? observeWindowOffset(instance, cb) : observeElementOffset(instance, cb);
14
11
  const TableBodyVirtualizedWindow = ()=>{
15
12
  const { table, estimateRowHeight, overscan, tbodyRef, virtualizerRef } = useTableContext();
16
- const scrollRoot = useContext(WindowScrollRootContext);
17
- const scrollRootRef = useRef(scrollRoot);
18
- scrollRootRef.current = scrollRoot;
19
- const getScrollElement = useCallback(()=>scrollRootRef.current, []);
20
- useLayoutEffect(()=>{
21
- const instance = virtualizerRef.current;
22
- if (instance && instance.scrollElement !== scrollRoot) instance.scrollOffset = null;
23
- });
24
- const virtualizer = useVirtualizer({
13
+ const virtualizer = useWindowVirtualizer({
25
14
  count: table.getRowModel().rows.length,
26
- getScrollElement: getScrollElement,
27
- observeElementRect: observeRootRect,
28
- observeElementOffset: observeRootOffset,
29
- scrollToFn: elementScroll,
30
- initialOffset: ()=>{
31
- const root = getScrollElement() ?? ("u" < typeof window ? null : window);
32
- return root ? getScrollMetrics(root).scrollTop : 0;
33
- },
34
15
  estimateSize: estimateRowHeight ?? (()=>40),
35
16
  overscan: overscan ?? TABLE_VIRTUALIZATION_OVERSCAN,
36
- scrollMargin: tbodyRef.current && scrollRoot ? getOffsetTopInScrollRoot(tbodyRef.current, scrollRoot) : 0,
17
+ scrollMargin: tbodyRef.current ? getDocumentOffsetTop(tbodyRef.current) : 0,
37
18
  getItemKey: useCallback((index)=>getRowKey(table.getRowModel().rows, index), [
38
19
  table
39
20
  ]),
@@ -46,7 +27,8 @@ const TableBodyVirtualizedWindow = ()=>{
46
27
  virtualizerRef
47
28
  ]);
48
29
  useResetVirtualizerOnDataChange(table, virtualizer);
49
- useSmoothScrollOnSort(table, getScrollElement);
30
+ const getScrollTarget = useCallback(()=>window, []);
31
+ useSmoothScrollOnSort(table, getScrollTarget);
50
32
  return /*#__PURE__*/ jsx(TableBodyVirtualizedCore, {
51
33
  tbodyRef: tbodyRef,
52
34
  virtualizer: virtualizer
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef } from "react";
3
3
  import { useTestId } from "../../../utils/testId.js";
4
4
  import { ScrollArea, ScrollAreaScrollbar, ScrollAreaViewport } from "../../ScrollArea/index.js";
5
- import { WindowScrollRootContext, useInfiniteScroll, useWheelHorizontalScroll, useWindowScrollRoot } from "../hooks/index.js";
5
+ import { useInfiniteScroll, useWheelHorizontalScroll } from "../hooks/index.js";
6
6
  import { useContainerWidth } from "../lib/index.js";
7
7
  import { StickyGroupParent } from "../StickyGroupParent.js";
8
8
  import { TableBody } from "../TableBody/index.js";
@@ -15,10 +15,8 @@ const TableInnerWindow = ({ isEmpty, showSettings, hasConsumerSettingsMenu, aria
15
15
  const testId = useTestId('window');
16
16
  const rootRef = useRef(null);
17
17
  const containerWidth = useContainerWidth(rootRef);
18
- const scrollRoot = useWindowScrollRoot(containerRef);
19
18
  useInfiniteScroll({
20
19
  mode: 'window',
21
- scrollRoot,
22
20
  table,
23
21
  virtualizerRef,
24
22
  tbodyRef,
@@ -104,10 +102,7 @@ const TableInnerWindow = ({ isEmpty, showSettings, hasConsumerSettingsMenu, aria
104
102
  /*#__PURE__*/ jsx(TableColGroup, {
105
103
  tableWidth: tableWidth
106
104
  }),
107
- !isEmpty && /*#__PURE__*/ jsx(WindowScrollRootContext, {
108
- value: scrollRoot,
109
- children: /*#__PURE__*/ jsx(TableBody, {})
110
- })
105
+ !isEmpty && /*#__PURE__*/ jsx(TableBody, {})
111
106
  ]
112
107
  }),
113
108
  children
@@ -4,4 +4,3 @@ export { useMasterCell } from './useMasterCell';
4
4
  export { useStickyGroupParent } from './useStickyGroupParent';
5
5
  export { useTableState } from './useTableState';
6
6
  export { useWheelHorizontalScroll } from './useWheelHorizontalScroll';
7
- export { useWindowScrollRoot, WindowScrollRootContext } from './useWindowScrollRoot';
@@ -4,4 +4,3 @@ export { useMasterCell } from "./useMasterCell.js";
4
4
  export { useStickyGroupParent } from "./useStickyGroupParent.js";
5
5
  export { useTableState } from "./useTableState.js";
6
6
  export { useWheelHorizontalScroll } from "./useWheelHorizontalScroll.js";
7
- export { WindowScrollRootContext, useWindowScrollRoot } from "./useWindowScrollRoot.js";
@@ -1,13 +1,11 @@
1
1
  import type { RefObject } from 'react';
2
2
  import type { RowData, Table } from '@tanstack/react-table';
3
- import { type DSTableFeatures, type ScrollRoot } from '../../lib';
3
+ import { type DSTableFeatures } from '../../lib';
4
4
  import type { TableVirtualizerInstance } from '../../TableContext/types';
5
5
  interface UseInfiniteScrollOptions<T extends RowData> {
6
6
  mode: 'container' | 'window';
7
7
  /** Scroll element ref — required for `container` mode */
8
8
  scrollRef?: RefObject<HTMLElement | null>;
9
- /** `window` mode: the resolved scroll root (see `useWindowScrollRoot`) */
10
- scrollRoot?: ScrollRoot | null;
11
9
  table: Table<DSTableFeatures, T>;
12
10
  virtualizerRef: RefObject<TableVirtualizerInstance | null>;
13
11
  tbodyRef?: RefObject<HTMLTableSectionElement | null>;
@@ -20,5 +18,5 @@ interface UseInfiniteScrollOptions<T extends RowData> {
20
18
  isLoadingPrevious?: boolean;
21
19
  }
22
20
  /** Single entry point for bidirectional infinite scroll behavior. */
23
- export declare const useInfiniteScroll: <T extends RowData>({ mode, scrollRef, scrollRoot, table, virtualizerRef, tbodyRef, onStartReached, onStartReachedThreshold, onEndReached, onEndReachedThreshold, initialScrollToRowId, isLoadingPrevious, }: UseInfiniteScrollOptions<T>) => void;
21
+ export declare const useInfiniteScroll: <T extends RowData>({ mode, scrollRef, table, virtualizerRef, tbodyRef, onStartReached, onStartReachedThreshold, onEndReached, onEndReachedThreshold, initialScrollToRowId, isLoadingPrevious, }: UseInfiniteScrollOptions<T>) => void;
24
22
  export {};
@@ -2,7 +2,7 @@ import { TABLE_END_REACHED_THRESHOLD, TABLE_START_REACHED_THRESHOLD } from "../.
2
2
  import { useInitialAnchor } from "./useInitialAnchor.js";
3
3
  import { usePrependScrollAnchor } from "./usePrependScrollAnchor.js";
4
4
  import { useScrollEdge } from "./useScrollEdge.js";
5
- const useInfiniteScroll = ({ mode, scrollRef, scrollRoot, table, virtualizerRef, tbodyRef, onStartReached, onStartReachedThreshold, onEndReached, onEndReachedThreshold, initialScrollToRowId, isLoadingPrevious })=>{
5
+ const useInfiniteScroll = ({ mode, scrollRef, table, virtualizerRef, tbodyRef, onStartReached, onStartReachedThreshold, onEndReached, onEndReachedThreshold, initialScrollToRowId, isLoadingPrevious })=>{
6
6
  const rows = table.getRowModel().rows;
7
7
  const ready = useInitialAnchor({
8
8
  initialScrollToRowId,
@@ -12,7 +12,6 @@ const useInfiniteScroll = ({ mode, scrollRef, scrollRoot, table, virtualizerRef,
12
12
  usePrependScrollAnchor({
13
13
  mode,
14
14
  scrollRef,
15
- scrollRoot,
16
15
  rows,
17
16
  virtualizerRef,
18
17
  tbodyRef,
@@ -22,7 +21,6 @@ const useInfiniteScroll = ({ mode, scrollRef, scrollRoot, table, virtualizerRef,
22
21
  edge: 'start',
23
22
  mode,
24
23
  scrollRef,
25
- scrollRoot,
26
24
  onReached: onStartReached,
27
25
  threshold: onStartReachedThreshold ?? TABLE_START_REACHED_THRESHOLD,
28
26
  enabled: ready
@@ -31,7 +29,6 @@ const useInfiniteScroll = ({ mode, scrollRef, scrollRoot, table, virtualizerRef,
31
29
  edge: 'end',
32
30
  mode,
33
31
  scrollRef,
34
- scrollRoot,
35
32
  onReached: onEndReached,
36
33
  threshold: onEndReachedThreshold ?? TABLE_END_REACHED_THRESHOLD,
37
34
  enabled: ready
@@ -1,11 +1,8 @@
1
1
  import { type RefObject } from 'react';
2
- import { type ScrollRoot } from '../../lib';
3
2
  import type { TableVirtualizerInstance } from '../../TableContext/types';
4
3
  interface UsePrependScrollAnchorOptions {
5
4
  mode: 'container' | 'window';
6
5
  scrollRef?: RefObject<HTMLElement | null>;
7
- /** `window` mode: the resolved scroll root (see `useWindowScrollRoot`) */
8
- scrollRoot?: ScrollRoot | null;
9
6
  rows: {
10
7
  id: string;
11
8
  }[];
@@ -34,5 +31,5 @@ interface UsePrependScrollAnchorOptions {
34
31
  * commit (hence no dep array) and its collapse joins the delta when the prepend
35
32
  * lands in the same commit.
36
33
  */
37
- export declare const usePrependScrollAnchor: ({ mode, scrollRef, scrollRoot, rows, virtualizerRef, tbodyRef, isLoadingPrevious, }: UsePrependScrollAnchorOptions) => void;
34
+ export declare const usePrependScrollAnchor: ({ mode, scrollRef, rows, virtualizerRef, tbodyRef, isLoadingPrevious, }: UsePrependScrollAnchorOptions) => void;
38
35
  export {};
@@ -1,6 +1,6 @@
1
1
  import { useLayoutEffect, useRef } from "react";
2
- import { detectDataChange, getScrollMetrics, scrollRootBy } from "../../lib/index.js";
3
- const usePrependScrollAnchor = ({ mode, scrollRef, scrollRoot, rows, virtualizerRef, tbodyRef, isLoadingPrevious })=>{
2
+ import { detectDataChange } from "../../lib/index.js";
3
+ const usePrependScrollAnchor = ({ mode, scrollRef, rows, virtualizerRef, tbodyRef, isLoadingPrevious })=>{
4
4
  const prevFirstRowIdRef = useRef(void 0);
5
5
  const prevLastRowIdRef = useRef(void 0);
6
6
  const prevIsLoadingPreviousRef = useRef(false);
@@ -12,15 +12,7 @@ const usePrependScrollAnchor = ({ mode, scrollRef, scrollRoot, rows, virtualizer
12
12
  });
13
13
  const seededRef = useRef(false);
14
14
  useLayoutEffect(()=>{
15
- const getRoot = ()=>'window' === mode ? scrollRoot : scrollRef?.current;
16
- const getScrollHeight = ()=>{
17
- const root = getRoot();
18
- return root ? getScrollMetrics(root).scrollHeight : 0;
19
- };
20
- const scrollBy = (delta)=>{
21
- const root = getRoot();
22
- if (root) scrollRootBy(root, delta);
23
- };
15
+ const getScrollHeight = ()=>'window' === mode ? document.documentElement.scrollHeight : scrollRef?.current?.scrollHeight ?? 0;
24
16
  const getStartLoaderHeight = ()=>{
25
17
  const loaderRows = tbodyRef?.current?.querySelectorAll('tr[data-loading-position="start"]');
26
18
  const count = loaderRows?.length ?? 0;
@@ -62,10 +54,16 @@ const usePrependScrollAnchor = ({ mode, scrollRef, scrollRoot, rows, virtualizer
62
54
  const rowDelta = newStart - prevFirstRowStartRef.current;
63
55
  const loaderDelta = getStartLoaderHeight() - prevLoaderHeight;
64
56
  const delta = rowDelta + loaderDelta;
65
- if (0 !== delta) scrollBy(delta);
57
+ if (0 !== delta) {
58
+ if ('window' === mode) window.scrollBy(0, delta);
59
+ else if (scrollRef?.current) scrollRef.current.scrollTop += delta;
60
+ }
66
61
  } else if (null !== prevScrollHeightRef.current) {
67
62
  const delta = getScrollHeight() - prevScrollHeightRef.current;
68
- if (delta > 0) scrollBy(delta);
63
+ if (delta > 0) {
64
+ if ('window' === mode) window.scrollBy(0, delta);
65
+ else if (scrollRef?.current) scrollRef.current.scrollTop += delta;
66
+ }
69
67
  }
70
68
  }
71
69
  prevFirstRowIdRef.current = rows[0]?.id;
@@ -1,5 +1,4 @@
1
1
  import { type RefObject } from 'react';
2
- import { type ScrollRoot } from '../../lib';
3
2
  type ScrollMode = 'container' | 'window';
4
3
  type ScrollEdge = 'start' | 'end';
5
4
  interface UseScrollEdgeOptions {
@@ -11,13 +10,11 @@ interface UseScrollEdgeOptions {
11
10
  threshold: number;
12
11
  /** When false, suppresses firing (e.g. while the initial anchor scroll settles) */
13
12
  enabled?: boolean;
14
- /** `window` mode: the resolved scroll root (see `useWindowScrollRoot`) */
15
- scrollRoot?: ScrollRoot | null;
16
13
  }
17
14
  /**
18
15
  * Fires `onReached` once when the user scrolls within `threshold` px of the
19
16
  * given edge. Re-arms after scrolling back past the threshold. A cooldown
20
17
  * guard prevents rapid re-fires when prepended/appended rows grow the content.
21
18
  */
22
- export declare const useScrollEdge: ({ edge, mode, scrollRef, onReached, threshold, enabled, scrollRoot, }: UseScrollEdgeOptions) => void;
19
+ export declare const useScrollEdge: ({ edge, mode, scrollRef, onReached, threshold, enabled, }: UseScrollEdgeOptions) => void;
23
20
  export {};
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useRef } from "react";
2
- import { SCROLL_EDGE_COOLDOWN_MS, getScrollMetrics } from "../../lib/index.js";
3
- const useScrollEdge = ({ edge, mode, scrollRef, onReached, threshold, enabled = true, scrollRoot })=>{
2
+ import { SCROLL_EDGE_COOLDOWN_MS } from "../../lib/index.js";
3
+ const useScrollEdge = ({ edge, mode, scrollRef, onReached, threshold, enabled = true })=>{
4
4
  const firedRef = useRef(false);
5
5
  const lastFiredAtRef = useRef(0);
6
6
  const onReachedRef = useRef(onReached);
@@ -12,12 +12,23 @@ const useScrollEdge = ({ edge, mode, scrollRef, onReached, threshold, enabled =
12
12
  enabledRef.current = enabled;
13
13
  });
14
14
  useEffect(()=>{
15
- const target = 'window' === mode ? scrollRoot : scrollRef?.current;
16
- if (!target) return;
17
15
  const check = ()=>{
18
16
  const callback = onReachedRef.current;
19
17
  if (!callback || !enabledRef.current) return;
20
- const { scrollTop, clientHeight, scrollHeight } = getScrollMetrics(target);
18
+ let scrollTop;
19
+ let clientHeight;
20
+ let scrollHeight;
21
+ if ('window' === mode) {
22
+ scrollTop = window.scrollY;
23
+ clientHeight = window.innerHeight;
24
+ scrollHeight = document.documentElement.scrollHeight;
25
+ } else {
26
+ const el = scrollRef?.current;
27
+ if (!el) return;
28
+ scrollTop = el.scrollTop;
29
+ clientHeight = el.clientHeight;
30
+ scrollHeight = el.scrollHeight;
31
+ }
21
32
  const distance = 'start' === edge ? scrollTop : scrollHeight - scrollTop - clientHeight;
22
33
  if (distance <= threshold) {
23
34
  const now = Date.now();
@@ -28,6 +39,8 @@ const useScrollEdge = ({ edge, mode, scrollRef, onReached, threshold, enabled =
28
39
  }
29
40
  } else firedRef.current = false;
30
41
  };
42
+ const target = 'window' === mode ? window : scrollRef?.current;
43
+ if (!target) return;
31
44
  target.addEventListener('scroll', check, {
32
45
  passive: true
33
46
  });
@@ -39,7 +52,6 @@ const useScrollEdge = ({ edge, mode, scrollRef, onReached, threshold, enabled =
39
52
  edge,
40
53
  mode,
41
54
  scrollRef,
42
- scrollRoot,
43
55
  threshold
44
56
  ]);
45
57
  };
@@ -11,7 +11,6 @@ export { getDndStyles } from './getDndStyles';
11
11
  export { getPinningStyles } from './getPinningStyles';
12
12
  export { getRowKey } from './getRowKey';
13
13
  export { isLastPinnedLeft } from './isLastPinnedLeft';
14
- export { getOffsetTopInScrollRoot, getScrollMetrics, getScrollRoot, isWindowScrollRoot, type ScrollRoot, scrollRootBy, } from './scrollRoot';
15
14
  export { useColumnDnd } from './useColumnDnd';
16
15
  export { useContainerWidth } from './useContainerWidth';
17
16
  export { useRowDnd } from './useRowDnd';
@@ -11,7 +11,6 @@ export { getDndStyles } from "./getDndStyles.js";
11
11
  export { getPinningStyles } from "./getPinningStyles.js";
12
12
  export { getRowKey } from "./getRowKey.js";
13
13
  export { isLastPinnedLeft } from "./isLastPinnedLeft.js";
14
- export { getOffsetTopInScrollRoot, getScrollMetrics, getScrollRoot, isWindowScrollRoot, scrollRootBy } from "./scrollRoot.js";
15
14
  export { useColumnDnd } from "./useColumnDnd.js";
16
15
  export { useContainerWidth } from "./useContainerWidth.js";
17
16
  export { useRowDnd } from "./useRowDnd.js";
@@ -245,10 +245,7 @@ export interface TableProps<T> extends TestableProps {
245
245
  * the close edge here.
246
246
  */
247
247
  onSettingsOpenChange?: (open: boolean) => void;
248
- /**
249
- * Enable row virtualization. `'container'` virtualizes within the table's own scroll container;
250
- * `'window'` follows the page scroll — the nearest scrollable ancestor, or the browser window.
251
- */
248
+ /** Enable row virtualization. `'container'` virtualizes within the scroll container; `'window'` virtualizes against the browser window. */
252
249
  virtualized?: TableVirtualized;
253
250
  /**
254
251
  * Whether columns stretch proportionally to fill the container width.
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { Alert, AlertClose, type AlertCloseProps, type AlertColor, AlertContent,
17
17
  export { AnimatedBackground, type AnimatedBackgroundProps, } from './components/AnimatedBackground';
18
18
  export { AppShell, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AppShellRail, type AppShellRailProps, AppShellRemote, type AppShellRemoteProps, } from './components/AppShell';
19
19
  export { Attribute, AttributeActions, AttributeActionsContent, type AttributeActionsContentProps, AttributeActionsItem, type AttributeActionsItemProps, type AttributeActionsProps, AttributeActionsTarget, type AttributeActionsTargetProps, AttributeLabel, AttributeLabelDescription, type AttributeLabelDescriptionProps, AttributeLabelInfo, type AttributeLabelInfoProps, type AttributeLabelProps, type AttributeProps, AttributeValue, type AttributeValueProps, } from './components/Attribute';
20
+ export { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, AvatarOverlay, type AvatarOverlayProps, type AvatarProps, type AvatarStatusChangeDetails, } from './components/Avatar';
20
21
  export { Badge, type BadgeProps } from './components/Badge';
21
22
  export { Banner, BannerClose, type BannerCloseProps, BannerContent, type BannerContentProps, BannerControls, type BannerControlsProps, BannerDescription, type BannerDescriptionProps, BannerIcon, type BannerIconProps, BannerLink, type BannerLinkProps, type BannerProps, BannerTitle, type BannerTitleProps, type BannerVariant, } from './components/Banner';
22
23
  export { Breadcrumbs, BreadcrumbsEllipsis, type BreadcrumbsEllipsisProps, BreadcrumbsItem, type BreadcrumbsItemProps, type BreadcrumbsProps, BreadcrumbsScopeSwitcher, type BreadcrumbsScopeSwitcherProps, BreadcrumbsSeparator, type BreadcrumbsSeparatorProps, type ScopeSwitcherItem, } from './components/Breadcrumbs';
@@ -35,7 +36,8 @@ export { DropdownMenu, DropdownMenuContent, DropdownMenuContextTrigger, Dropdown
35
36
  export { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIllustration, EmptyStateLink, EmptyStateMessage, EmptyStateTitle, } from './components/EmptyState';
36
37
  export { FeedbackPulse, type FeedbackPulseCloseReason, type FeedbackPulseProps, } from './components/FeedbackPulse';
37
38
  export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, } from './components/Field';
38
- export { FileUpload, FileUploadDropzone, type FileUploadDropzoneProps, FileUploadError, type FileUploadErrorCode, type FileUploadErrorProps, FileUploadItem, FileUploadItemAction, type FileUploadItemActionProps, FileUploadItemDeleteTrigger, type FileUploadItemDeleteTriggerProps, type FileUploadItemFile, FileUploadItemGroup, type FileUploadItemGroupProps, type FileUploadItemProps, FileUploadItemReplaceTrigger, type FileUploadItemReplaceTriggerProps, type FileUploadProps, type FileUploadRejection, FileUploadTrigger, type FileUploadTriggerProps, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants, } from './components/FileUpload';
39
+ export { FileUpload, FileUploadDropzone, type FileUploadDropzoneProps, FileUploadError, type FileUploadErrorCode, type FileUploadErrorProps, FileUploadItem, FileUploadItemAction, type FileUploadItemActionProps, FileUploadItemDeleteTrigger, type FileUploadItemDeleteTriggerProps, type FileUploadItemFile, FileUploadItemGroup, type FileUploadItemGroupProps, type FileUploadItemProps, FileUploadItemReplaceTrigger, type FileUploadItemReplaceTriggerProps, type FileUploadProps, type FileUploadRejection, FileUploadTrigger, type FileUploadTriggerProps, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants, useFilePreviewUrl, } from './components/FileUpload';
40
+ export { FilterDropdown, FilterDropdownAllOption, type FilterDropdownAllOptionProps, FilterDropdownClear, type FilterDropdownClearProps, FilterDropdownContent, type FilterDropdownContentProps, FilterDropdownEmpty, type FilterDropdownEmptyProps, FilterDropdownFooter, FilterDropdownFooterClear, type FilterDropdownFooterClearProps, type FilterDropdownFooterProps, FilterDropdownGroup, FilterDropdownGroupLabel, type FilterDropdownGroupLabelProps, type FilterDropdownGroupProps, type FilterDropdownOpenChangeDetails, FilterDropdownOption, type FilterDropdownOptionProps, type FilterDropdownProps, FilterDropdownSearch, type FilterDropdownSearchProps, FilterDropdownSelected, type FilterDropdownSelectedProps, FilterDropdownTrigger, type FilterDropdownTriggerProps, type FilterDropdownValueChangeDetails, filterDropdownControlVariants, filterDropdownTriggerVariants, type UseFilterDropdownResult, useFilterDropdown, } from './components/FilterDropdown';
39
41
  export { type Condition, type ExprNode, type FieldMetadata, type FieldType, FilterInput, FilterInputChip, type FilterInputChipData, type FilterInputChipProps, type FilterInputChipVariant, FilterInputFieldMenu, type FilterInputFieldMenuProps, FilterInputOperatorMenu, type FilterInputOperatorMenuProps, type FilterInputProps, type FilterOperator, type Group, } from './components/FilterInput';
40
42
  export { Flex, type FlexProps } from './components/Flex';
41
43
  export { FormatDateTime, type FormatDateTimeProps } from './components/FormatDateTime';
@@ -73,7 +75,7 @@ export { SearchInput, type SearchInputProps } from './components/SearchInput';
73
75
  export { SearchModal, SearchModalBody, type SearchModalBodyProps, SearchModalContent, type SearchModalContentProps, SearchModalEmpty, type SearchModalEmptyProps, SearchModalFooter, type SearchModalFooterProps, SearchModalGroup, SearchModalGroupLabel, type SearchModalGroupLabelProps, type SearchModalGroupProps, SearchModalInput, type SearchModalInputProps, SearchModalItem, type SearchModalItemProps, type SearchModalProps, SearchModalTrigger, type SearchModalTriggerProps, useSearchModalContext, } from './components/SearchModal';
74
76
  export { SegmentedControl, SegmentedControlButton, type SegmentedControlButtonProps, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlProps, SegmentedControlSeparator, type SegmentedControlSeparatorProps, } from './components/SegmentedControl';
75
77
  export { SegmentedTabs, SegmentedTabsButton, SegmentedTabsContent, SegmentedTabsList, SegmentedTabsSeparator, SegmentedTabsTrigger, SegmentedTabsTriggerButton, } from './components/SegmentedTabs';
76
- export { createListCollection, Select, SelectButton, SelectClearTrigger, SelectContent, type SelectDataItem, SelectEmptyState, type SelectEmptyStateProps, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, type UseSelectSearchOptions, type UseSelectSearchResult, useSelectSearch, } from './components/Select';
78
+ export { createListCollection, Select, SelectButton, SelectClearTrigger, SelectContent, type SelectDataItem, SelectEmptyState, type SelectEmptyStateProps, SelectFooter, type SelectFooterProps, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionHint, type SelectOptionHintProps, SelectOptionIndicator, SelectOptionText, SelectPositioner, type SelectPositionerProps, SelectSearchInput, SelectSeparator, selectFooterVariants, type UseSelectSearchOptions, type UseSelectSearchResult, useSelectSearch, } from './components/Select';
77
79
  export { Selection, SelectionAll, type SelectionAllProps, SelectionBulkBar, type SelectionBulkBarPlacement, type SelectionBulkBarProps, type SelectionContextValue, SelectionItem, type SelectionItemProps, type SelectionProps, useSelectionContext, } from './components/Selection';
78
80
  export { Separator, type SeparatorProps } from './components/Separator';
79
81
  export { SettingsHeader, SettingsHeaderActions, type SettingsHeaderActionsProps, SettingsHeaderBreadcrumbs, type SettingsHeaderBreadcrumbsProps, SettingsHeaderDescription, type SettingsHeaderDescriptionProps, SettingsHeaderFilters, type SettingsHeaderFiltersProps, SettingsHeaderHeading, type SettingsHeaderHeadingProps, type SettingsHeaderProps, SettingsHeaderTitle, type SettingsHeaderTitleProps, } from './components/SettingsHeader';
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export { Alert, AlertClose, AlertContent, AlertControls, AlertDescription, Alert
6
6
  export { AnimatedBackground } from "./components/AnimatedBackground/index.js";
7
7
  export { AppShell, AppShellHeader, AppShellRail, AppShellRemote } from "./components/AppShell/index.js";
8
8
  export { Attribute, AttributeActions, AttributeActionsContent, AttributeActionsItem, AttributeActionsTarget, AttributeLabel, AttributeLabelDescription, AttributeLabelInfo, AttributeValue } from "./components/Attribute/index.js";
9
+ export { Avatar, AvatarFallback, AvatarImage, AvatarOverlay } from "./components/Avatar/index.js";
9
10
  export { Badge } from "./components/Badge/index.js";
10
11
  export { Banner, BannerClose, BannerContent, BannerControls, BannerDescription, BannerIcon, BannerLink, BannerTitle } from "./components/Banner/index.js";
11
12
  export { Breadcrumbs, BreadcrumbsEllipsis, BreadcrumbsItem, BreadcrumbsScopeSwitcher, BreadcrumbsSeparator } from "./components/Breadcrumbs/index.js";
@@ -24,7 +25,8 @@ export { DropdownMenu, DropdownMenuContent, DropdownMenuContextTrigger, Dropdown
24
25
  export { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIllustration, EmptyStateLink, EmptyStateMessage, EmptyStateTitle } from "./components/EmptyState/index.js";
25
26
  export { FeedbackPulse } from "./components/FeedbackPulse/index.js";
26
27
  export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle } from "./components/Field/index.js";
27
- export { FileUpload, FileUploadDropzone, FileUploadError, FileUploadItem, FileUploadItemAction, FileUploadItemDeleteTrigger, FileUploadItemGroup, FileUploadItemReplaceTrigger, FileUploadTrigger, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants } from "./components/FileUpload/index.js";
28
+ export { FileUpload, FileUploadDropzone, FileUploadError, FileUploadItem, FileUploadItemAction, FileUploadItemDeleteTrigger, FileUploadItemGroup, FileUploadItemReplaceTrigger, FileUploadTrigger, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants, useFilePreviewUrl } from "./components/FileUpload/index.js";
29
+ export { FilterDropdown, FilterDropdownAllOption, FilterDropdownClear, FilterDropdownContent, FilterDropdownEmpty, FilterDropdownFooter, FilterDropdownFooterClear, FilterDropdownGroup, FilterDropdownGroupLabel, FilterDropdownOption, FilterDropdownSearch, FilterDropdownSelected, FilterDropdownTrigger, filterDropdownControlVariants, filterDropdownTriggerVariants, useFilterDropdown } from "./components/FilterDropdown/index.js";
28
30
  export { FilterInput, FilterInputChip, FilterInputFieldMenu, FilterInputOperatorMenu } from "./components/FilterInput/index.js";
29
31
  export { Flex } from "./components/Flex/index.js";
30
32
  export { FormatDateTime } from "./components/FormatDateTime/index.js";
@@ -62,7 +64,7 @@ export { SearchInput } from "./components/SearchInput/index.js";
62
64
  export { SearchModal, SearchModalBody, SearchModalContent, SearchModalEmpty, SearchModalFooter, SearchModalGroup, SearchModalGroupLabel, SearchModalInput, SearchModalItem, SearchModalTrigger, useSearchModalContext } from "./components/SearchModal/index.js";
63
65
  export { SegmentedControl, SegmentedControlButton, SegmentedControlItem, SegmentedControlSeparator } from "./components/SegmentedControl/index.js";
64
66
  export { SegmentedTabs, SegmentedTabsButton, SegmentedTabsContent, SegmentedTabsList, SegmentedTabsSeparator, SegmentedTabsTrigger, SegmentedTabsTriggerButton } from "./components/SegmentedTabs/index.js";
65
- export { Select, SelectButton, SelectClearTrigger, SelectContent, SelectEmptyState, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, createListCollection, useSelectSearch } from "./components/Select/index.js";
67
+ export { Select, SelectButton, SelectClearTrigger, SelectContent, SelectEmptyState, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionHint, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, createListCollection, selectFooterVariants, useSelectSearch } from "./components/Select/index.js";
66
68
  export { Selection, SelectionAll, SelectionBulkBar, SelectionItem, useSelectionContext } from "./components/Selection/index.js";
67
69
  export { Separator } from "./components/Separator/index.js";
68
70
  export { SettingsHeader, SettingsHeaderActions, SettingsHeaderBreadcrumbs, SettingsHeaderDescription, SettingsHeaderFilters, SettingsHeaderHeading, SettingsHeaderTitle } from "./components/SettingsHeader/index.js";