@spark-ui/components
Version:
Spark (Leboncoin design system) components.
144 lines (132 loc) • 4.5 kB
TypeScript
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 };