import React, { type CSSProperties, type ForwardedRef, type ReactElement } from "react"; import { type VibeComponentProps } from "../../types"; import { type VirtualizedListItem, type VirtualizedListLayout, type VirtualizedListScrollDirection } from "./VirtualizedList.types"; export interface VirtualizedListProps extends VibeComponentProps { /** * Class name applied to the scrollable container. */ scrollableClassName?: string; /** * The orientation of the list. */ layout?: VirtualizedListLayout; /** * The list of items to be rendered. */ items: VirtualizedListItem[]; /** * Function to render each item in the list. */ itemRenderer: (item: VirtualizedListItem, index: number, style: CSSProperties) => ReactElement | JSX.Element; /** * Function to get the size (height/width) of each item, based on layout. */ getItemSize?: (item: VirtualizedListItem, index: number) => number; /** * Function to get the unique ID of an item. */ getItemId?: (item: VirtualizedListItem, index: number) => string; /** * Callback fired when the scroll animation is finished. */ onScrollToFinished?: () => void; /** * Number of items to render above and below the visible portion. */ overscanCount?: number; /** * The duration of the scroll animation in milliseconds. */ scrollDuration?: number; /** * Callback fired when items are rendered. */ onItemsRendered?: ({ firstItemId, secondItemId, lastItemId, centerItemId, firstItemOffsetEnd, currentOffsetTop }: { firstItemId: string; secondItemId: string; lastItemId: string; centerItemId: string; firstItemOffsetEnd: number; currentOffsetTop: number; }) => void; /** * The delay (in ms) for throttling the `onItemsRendered` callback. */ onItemsRenderedThrottleMs?: number; /** * Callback fired when the list size changes. */ onSizeUpdate?: (width: number, height: number) => void; /** * Callback fired when the vertical or horizontal scrollbar visibility changes. */ onLayoutDirectionScrollbarVisibilityChange?: (value: boolean) => void; /** * The ARIA role attribute applied to the list. */ role?: string; /** * The ARIA label for the list. */ "aria-label"?: string; /** * Custom inline styles applied to the list. */ style?: CSSProperties; /** * The ID of the item to scroll to. */ scrollToId?: string; /** * Reference to the virtualized list component. */ virtualListRef?: ForwardedRef; /** * Callback fired when the list is scrolled. */ onScroll?: (horizontalScrollDirection: VirtualizedListScrollDirection, scrollTop: number, scrollUpdateWasRequested: boolean) => void; } declare const VirtualizedList: React.ForwardRefExoticComponent>; export default VirtualizedList;