import { type ElementType } from 'react'; import { type SpiritButtonProps } from './button'; import { type ChildrenProps, type SpiritElementProps, type SpiritLItemElementProps, type SpiritPolymorphicElementPropsWithRef, type SpiritUListElementProps } from './shared'; export type PaginationLinkDirectionType = 'previous' | 'next'; export interface PaginationProps extends SpiritElementProps { listProps?: SpiritUListElementProps; } export interface PaginationItemProps extends SpiritLItemElementProps { } export interface AriaPaginationProps { accessibilityLabel?: string; } export interface PaginationLinkBaseProps { elementType?: E; } export interface PaginationLinkProps extends PaginationLinkBaseProps, AriaPaginationProps { isCurrent?: boolean; pageNumber: number; } export type PaginationButtonLinkProps = SpiritButtonProps & AriaPaginationProps & { direction: PaginationLinkDirectionType; }; export type PaginationLinkPreviousNextProps = SpiritButtonProps & AriaPaginationProps; export interface SpiritPaginationProps extends PaginationProps { } export interface SpiritPaginationItemProps extends PaginationItemProps { } export type SpiritPaginationLinkProps = PaginationLinkProps & SpiritPolymorphicElementPropsWithRef>; export type SpiritPaginationButtonLinkProps = PaginationButtonLinkProps; export type SpiritPaginationLinkPreviousNextProps = PaginationLinkPreviousNextProps; export interface UncontrolledPaginationProps { accessibilityLabelNext?: string; accessibilityLabelPrevious?: string; defaultPage?: number; visiblePages?: number; onChange?: (pageNumber: number) => void; totalPages: number; } export interface SpiritUncontrolledPaginationProps extends AriaPaginationProps, UncontrolledPaginationProps, ChildrenProps { } export interface UsePaginationProps extends UncontrolledPaginationProps { defaultPage: number; visiblePages: number; }