interface UsePaginationOptions { /** 현재 페이지 (1-based) */ readonly currentPage: number; /** * 한 번에 노출할 최대 페이지 번호 개수 * @default 5 */ readonly pageWindowSize?: number; /** 전체 페이지 수 */ readonly totalPages: number; } interface UsePaginationResult { /** 페이지네이션을 노출할 필요가 있는지 여부 (총 페이지가 2개 이상) */ readonly hasPages: boolean; /** 현재 페이지가 첫 페이지인지 여부 */ readonly isFirstPage: boolean; /** 현재 페이지가 마지막 페이지인지 여부 */ readonly isLastPage: boolean; /** 현재 윈도우에 노출할 페이지 번호 목록 (1-based) */ readonly pages: number[]; } /** * 현재 페이지를 중심으로 노출할 페이지 번호 윈도우를 계산합니다. * * - 전체 페이지가 `pageWindowSize` 이하면 모든 페이지를 노출합니다. * - 그 외에는 현재 페이지를 가운데 두고 양옆으로 균등하게 노출하며, * 경계(첫/마지막 페이지)에 가까울 때 윈도우를 보정합니다. * * 렌더링은 사용처에서 프리미티브(`Pagination`, `PaginationButton` 등)를 * 자유롭게 조합하도록 분리되어 있습니다. */ declare const usePagination: ({ currentPage, totalPages, pageWindowSize, }: UsePaginationOptions) => UsePaginationResult; export type { UsePaginationOptions, UsePaginationResult }; export { usePagination }; //# sourceMappingURL=usePagination.d.ts.map