UNPKG

@spark-ui/components

Version:

Spark (Leboncoin design system) components.

144 lines (132 loc) 4.5 kB
import { ReactNode, ComponentPropsWithRef, ComponentPropsWithoutRef, Ref, FC } from 'react'; import * as pagination from '@zag-js/pagination'; import * as react_jsx_runtime from 'react/jsx-runtime'; interface PaginationProviderProps { children: ReactNode; /** * Total number of data items available across all pages. */ count: number; /** * Maximum amount of items displayed on a single page. */ pageSize: number; /** * Number of visible pages (or ellipsis) between previous and next page triggers. */ visiblePageItems?: number; /** * The current page (active page) */ page?: pagination.Props['page']; /** * If your pagination contains buttons instead of links, set `type` to `button`, extra attributes will be applied on page items for a11y. */ type?: pagination.Props['type']; onPageChange?: pagination.Props['onPageChange']; noEllipsis?: boolean; } type PaginationProps = PaginationProviderProps & { className?: string; }; interface EllipsisProps extends ComponentPropsWithRef<'span'> { index: number; } declare const Ellipsis: { ({ children, index, className, ref, ...rest }: EllipsisProps): react_jsx_runtime.JSX.Element; displayName: string; }; interface AnchorProps$4 extends ComponentPropsWithoutRef<'a'> { href: string; } interface ButtonProps$4 extends ComponentPropsWithoutRef<'button'> { href?: undefined; } type FirstPageTriggerProps = Omit<AnchorProps$4 | ButtonProps$4, 'aria-label'> & { 'aria-label': string; ref?: Ref<HTMLButtonElement>; }; declare const FirstPageTrigger: { ({ children, className, href, ref, ...props }: FirstPageTriggerProps): react_jsx_runtime.JSX.Element; displayName: string; }; interface AnchorProps$3 extends ComponentPropsWithoutRef<'a'> { href: string; } interface ButtonProps$3 extends ComponentPropsWithoutRef<'button'> { href?: undefined; } type ItemProps = Omit<AnchorProps$3 | ButtonProps$3, 'aria-label'> & { 'aria-label': string; value: number; ref?: Ref<HTMLButtonElement>; }; declare const Item: { ({ children, value, className, href, ref, ...props }: ItemProps): react_jsx_runtime.JSX.Element; displayName: string; }; interface AnchorProps$2 extends ComponentPropsWithoutRef<'a'> { href: string; } interface ButtonProps$2 extends ComponentPropsWithoutRef<'button'> { href?: undefined; } type LastPageTriggerProps = Omit<AnchorProps$2 | ButtonProps$2, 'aria-label'> & { 'aria-label': string; ref?: Ref<HTMLButtonElement>; }; declare const LastPageTrigger: { ({ children, className, href, ref, ...props }: LastPageTriggerProps): react_jsx_runtime.JSX.Element; displayName: string; }; interface AnchorProps$1 extends ComponentPropsWithoutRef<'a'> { href: string; } interface ButtonProps$1 extends ComponentPropsWithoutRef<'button'> { href?: undefined; } type NextTriggerProps = Omit<AnchorProps$1 | ButtonProps$1, 'aria-label'> & { 'aria-label': string; ref?: Ref<HTMLButtonElement>; }; declare const NextTrigger: { ({ children, className, href, ref, ...props }: NextTriggerProps): react_jsx_runtime.JSX.Element; displayName: string; }; type PageItem = Extract<pagination.Api['pages'][number], { type: 'page'; }>; type TweakedPaginationApi<T extends 'noEllipsis' | ''> = Omit<pagination.Api, 'pages'> & { pages: T extends 'noEllipsis' ? PageItem[] : pagination.Api['pages']; }; interface PagesProps<T extends 'noEllipsis' | ''> { children: (pagination: TweakedPaginationApi<T>) => ReactNode; } declare const Pages: { <T extends "noEllipsis" | "" = "">({ children }: PagesProps<T>): ReactNode; displayName: string; }; interface AnchorProps extends ComponentPropsWithoutRef<'a'> { href: string; } interface ButtonProps extends ComponentPropsWithoutRef<'button'> { href?: undefined; } type PrevTriggerProps = Omit<AnchorProps | ButtonProps, 'aria-label'> & { 'aria-label': string; ref?: Ref<HTMLButtonElement>; }; declare const PrevTrigger: { ({ children, className, href, ref, ...props }: PrevTriggerProps): react_jsx_runtime.JSX.Element; displayName: string; }; declare const Pagination: FC<PaginationProps> & { PrevTrigger: typeof PrevTrigger; NextTrigger: typeof NextTrigger; Pages: typeof Pages; Item: typeof Item; Ellipsis: typeof Ellipsis; FirstPageTrigger: typeof FirstPageTrigger; LastPageTrigger: typeof LastPageTrigger; }; export { Pagination };