import React from 'react'; import type { Polymorphic } from '../core/polymorphism'; import type { HStackDefaultElement, HStackProps } from '../layout/HStack'; import type { PaginationOptions } from './usePagination'; export type PaginationPageButtonProps = { /** The page number */ page: number; /** Click handler for the page button */ onClick: (page: number) => void; /** A data attribute for the page number, used for focus management */ 'data-pagenumber': number; /** Whether this is the current active page */ isCurrentPage?: boolean; /** Whether the button is disabled */ disabled?: boolean; /** Accessibility label for the button */ accessibilityLabel?: string; /** Test ID for the button */ testID?: string; }; export type PaginationNavigationButtonProps = { /** Which navigation button this is */ direction: 'first' | 'previous' | 'next' | 'last'; /** Click handler for the button */ onClick: () => void; /** Whether the button is disabled */ disabled?: boolean; /** Accessibility label for the button */ accessibilityLabel?: string; /** Test ID for the button */ testID?: string; }; export type PaginationEllipsisProps = { /** Custom content to display instead of default "..." */ content?: string; /** Test ID for the ellipsis element */ testID?: string; }; export type PaginationPageButtonComponent = React.FC; export type PaginationNavigationButtonComponent = React.FC; export type PaginationEllipsisComponent = React.FC; export type PaginationBaseProps = Omit & { /** Current active page number (1-based) */ activePage: number; /** Whether to show first and last page navigation buttons */ showFirstLastButtons?: boolean; disabled?: boolean; /** Custom test IDs for specific elements within pagination */ testIDMap?: { nav?: string; nextButton?: string; prevButton?: string; firstButton?: string; lastButton?: string; }; /** Custom label for the first page button */ firstPageButtonLabel?: string; /** Custom label for the last page button */ lastPageButtonLabel?: string; /** Custom accessibility labels for navigation buttons */ accessibilityLabels?: { next?: string; previous?: string; first?: string; last?: string; page?: (page: number) => string; }; accessibilityLabel?: string; /** * Custom component for rendering page buttons. * Must use forwardRef to properly receive and forward the ref to a focusable DOM element * for focus management to work correctly. */ PaginationPageButtonComponent?: PaginationPageButtonComponent; /** * Custom component for rendering navigation buttons. * Must use forwardRef to properly receive and forward the ref to a focusable DOM element * for focus management to work correctly. */ PaginationNavigationButtonComponent?: PaginationNavigationButtonComponent; /** Custom component for rendering ellipsis */ PaginationEllipsisComponent?: PaginationEllipsisComponent; }; export type PaginationProps = Polymorphic.ExtendableProps< HStackProps, PaginationBaseProps >; export declare const Pagination: ( _props: PaginationProps, ) => import('react/jsx-runtime').JSX.Element; //# sourceMappingURL=Pagination.d.ts.map