import type { PaginationRootProps, PaginationRootEmits } from 'reka-ui'; import type { VNode } from 'vue'; import type { AppConfig } from '@nuxt/schema'; import theme from '#build/b24ui/pagination'; import type { ButtonProps, IconComponent } from '../types'; import type { ComponentConfig } from '../types/tv'; type Pagination = ComponentConfig; export interface PaginationProps extends Partial> { /** * The element or component this component should render as. * @defaultValue 'div' */ as?: any; /** * The icon to use for the first page control. * @defaultValue icons.chevronDoubleLeft * @IconComponent */ firstIcon?: IconComponent; /** * The icon to use for the previous page control. * @defaultValue icons.chevronLeft * @IconComponent */ prevIcon?: IconComponent; /** * The icon to use for the next page control. * @defaultValue icons.chevronRight * @IconComponent */ nextIcon?: IconComponent; /** * The icon to use for the last page control. * @defaultValue icons.chevronDoubleRight * @IconComponent */ lastIcon?: IconComponent; /** * The icon to use for the ellipsis control. * @defaultValue icons.ellipsis * @IconComponent */ ellipsisIcon?: IconComponent; /** * The color of the pagination controls. * @defaultValue 'air-secondary-no-accent' */ color?: ButtonProps['color']; /** * The color of the active pagination control. * @defaultValue 'air-primary' */ activeColor?: ButtonProps['color']; /** * Whether to show the first, previous, next, and last controls. * @defaultValue true */ showControls?: boolean; size?: ButtonProps['size']; /** * A function to render page controls as links. * @param page The page number to navigate to. */ to?: (page: number) => ButtonProps['to']; class?: any; b24ui?: Pagination['slots']; } export interface PaginationEmits extends PaginationRootEmits { } export interface PaginationSlots { first?(props?: {}): VNode[]; prev?(props?: {}): VNode[]; next?(props?: {}): VNode[]; last?(props?: {}): VNode[]; ellipsis?(props: { b24ui: Pagination['b24ui']; }): VNode[]; item?(props: { page: number; pageCount: number; item: { type: 'ellipsis'; } | { type: 'page'; value: number; }; index: number; }): VNode[]; } declare const _default: typeof __VLS_export; export default _default; declare const __VLS_export: __VLS_WithSlots any; }, string, import("vue").PublicProps, Readonly & Readonly<{ "onUpdate:page"?: ((value: number) => any) | undefined; }>, { color: "link" | "air-primary" | "air-primary-success" | "air-primary-alert" | "air-primary-copilot" | "air-secondary" | "air-secondary-alert" | "air-secondary-accent" | "air-secondary-accent-1" | "air-secondary-accent-2" | "air-tertiary" | "default" | "danger" | "success" | "warning" | "primary" | "secondary" | "collab" | "ai" | "air-secondary-no-accent" | "air-tertiary-accent" | "air-tertiary-no-accent" | "air-selection" | "air-boost"; activeColor: "link" | "air-primary" | "air-primary-success" | "air-primary-alert" | "air-primary-copilot" | "air-secondary" | "air-secondary-alert" | "air-secondary-accent" | "air-secondary-accent-1" | "air-secondary-accent-2" | "air-tertiary" | "default" | "danger" | "success" | "warning" | "primary" | "secondary" | "collab" | "ai" | "air-secondary-no-accent" | "air-tertiary-accent" | "air-tertiary-no-accent" | "air-selection" | "air-boost"; itemsPerPage: number; showEdges: boolean; siblingCount: number; total: number; showControls: boolean; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PaginationSlots>; type __VLS_WithSlots = T & { new (): { $slots: S; }; };