Pagination

Designer doc
Pagination component helps to navigate through multiple pages of content.

Example

Basic Usage
current and onChange props can be used to achieve controlled pagination
View code
Customizing Items
View code
Custom Input
numSelected prop can be used to display the number of selected rows, if table requires such functionality.
View code
Number of Items to Display
You can change the number of items being displayed by providing navSpan prop. Note that you should pass an odd number greater than 3.
View code
Pagination Alignment
Alignment is defaulted to Center, but its legacy alignment can be set to Right, to position the main Pagination page number button group accordingly.
Right Aligned
View code
Pagination Variants
Variants can be applied to individual PaginationList basis. In other words, you can also have multiple PaginationList styles within the same Pagination if you need.
Variant Text
View code
Variant Minimal
View code
Customization
View code

Accessibility

You can navigate the page using:
  • Arrow Right: go to next page
  • Arrow Left: go to previous page
  • Shift + Arrow Left: go to first page
  • Shift + Arrow Right: go to last page
If you are using a Screen Reader, focusing on a non-selected item will spell out β€œPage {number}, showing row {start} to {end}”. While focusing on selected one spells out β€œGo to page {number}, showing row {start} to {end}”.
Focusing on a jumper will spell out β€œJump to page {page}”.

References

API

Pagination
Prop nameTypeDefaultDescription
alignmentPaginationAlignmentscenter
Controls how the pagination items (like pages or page text) are aligned in the main container.
  • Center (default): Page items appear in the middle.
  • Right: Page items float to the right, left area can hold other items.
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
childrenReactNode
React children that can be used to override or extend the default pagination items. For example, you can pass <PaginationList /> or <PaginationPageText /> here.
currentnumber
The controlled current page number (1-based). If used, initialCurrent is ignored and the component becomes controlled.
initialCurrentnumber1
The initial (uncontrolled) current page number. Defaults to 1.
initialNavSpannumber7
initialPageSizenumber20
leftContainerPropsDivProps
leftElementReactNode
Defaults to showing total pages and selected items for non-minimal variants.
navSpannumber
The controlled number of pagination elements to show (e.g., 7 shows a maximum of 7 page buttons). Must be an odd number greater than 3 for best display.
numSelectednumber
(Optional) Number of selected items (out of totalRow). Used by default to display information like "x selected".
onChange(page: number) => void
A callback that fires when the current page changes (e.g., user navigates to a new page). Receives the new page number as its argument.
onNavSpanChange(navSpan: number) => void
onPageSizeChange(pageSize: number) => void
pageSizenumber
The controlled page size (number of items per page). If used, initialPageSize is ignored and the component becomes controlled.
rightContainerPropsDivProps
rightElementReactNode
Defaults to showing page navigation for non-minimal variants.
sizesnumber[][10, 20, 30, 40]
Selectable page sizes.
totalRownumber
The total number of rows (items) across all pages. This is used to calculate the number of pages.
variantPaginationVariantsoutlined
The variant of pagination style to use.
  • Outlined (default): Shows outline styling for buttons.
  • Minimal: Shows a simpler pagination, often with only page text or partial controls.
PaginationArrow
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
typeArrowTypes
PaginationItem
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
pagenumber
PaginationJumper
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
typeJumperTypes
PaginationList
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
itemSizenumber
renderArrow(type: ArrowTypes) => ReactElement<any, string | JSXElementConstructor<any>>(type: ArrowTypes) => <PaginationArrow type={type} />
renderItem(page: number) => ReactElement<any, string | JSXElementConstructor<any>>(item: number) => <PaginationItem page={item} />
renderJumper(type: JumperTypes) => ReactElement<any, string | JSXElementConstructor<any>>(type: JumperTypes) => <PaginationJumper type={type} />
variant"text" | "outlined"
PaginationPageSelect
Prop nameTypeDefaultDescription
idstring
initialIsOpenboolean
initialKeyboardHighlightedIndexnumber
initialMouseHighlightedIndexnumber
initialSearchValuestring
initialSelectedIndexnumber
initialValueSelectValue
inputPropsSelectSearchProps
isOpenboolean
keyboardHighlightedIndexnumber
listOptionPropsSelectOptionProps
listPropsSelectListProps
mouseHighlightedIndexnumber
onChangeChangeCallback
Called when selected value is changed. Different from onSelect, onChange is not called when the value is already selected.
onIsOpenChange(isOpen: boolean) => void
onKeyboardHighlightedIndexChange(index: number) => void
onMouseHighlightedIndexChange(index: number) => void
onSearchSearchCallback
onSelectChangeCallback
Different from onChange: onSelect is triggered even if the option's value is the selected one.
onSelectedIndexChange(index: number) => void
prefixReactNodeGo to
searchValuestring
This is not the selected value. Rather, it's a search value on input if you use SelectSearch.
selectedIndexnumber
stateReducerAcdcStateReducer
valueSelectValue
PaginationPageText
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
itemSizenumber
renderArrow(type: ArrowTypes) => ReactElement<any, string | JSXElementConstructor<any>>(type: ArrowTypes) => <PaginationArrow type={type} />
renderPageText(type: string) => ReactElement<any, string | JSXElementConstructor<any>>(current: string) => <PageText>{current}</PageText>
variant"minimal"
PaginationSelected
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
numSelectednumber
prefixReactNodeSelected:
PaginationSizeSelect
Prop nameTypeDefaultDescription
buttonPropsSelectButtonProps
idstring
initialIsOpenboolean
initialKeyboardHighlightedIndexnumber
initialMouseHighlightedIndexnumber
initialSearchValuestring
initialSelectedIndexnumber
initialValueSelectValue
isOpenboolean
keyboardHighlightedIndexnumber
listPropsSelectListProps
mouseHighlightedIndexnumber
onChangeChangeCallback
Called when selected value is changed. Different from onSelect, onChange is not called when the value is already selected.
onIsOpenChange(isOpen: boolean) => void
onKeyboardHighlightedIndexChange(index: number) => void
onMouseHighlightedIndexChange(index: number) => void
onSearchSearchCallback
onSelectChangeCallback
Different from onChange: onSelect is triggered even if the option's value is the selected one.
onSelectedIndexChange(index: number) => void
searchValuestring
This is not the selected value. Rather, it's a search value on input if you use SelectSearch.
selectedIndexnumber
sizesnumber[]
stateReducerAcdcStateReducer
suffixReactNode/ page
valueSelectValue
wrapperPropsHTMLAttributes<HTMLDivElement> & { as?: any; ref?: HTMLDivElement; }
PaginationTotal
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
prefixReactNodeTotal:
    Example
    Example
    Basic Usage
    Basic Usage
    Customizing Items
    Customizing Items
    Custom Input
    Custom Input
    Number of Items to Display
    Number of Items to Display
    Pagination Alignment
    Pagination Alignment
    Pagination Variants
    Pagination Variants
    Customization
    Customization
    Accessibility
    Accessibility
    References
    References
    API
    API
    Pagination
    Pagination
    PaginationArrow
    PaginationArrow
    PaginationItem
    PaginationItem
    PaginationJumper
    PaginationJumper
    PaginationList
    PaginationList
    PaginationPageSelect
    PaginationPageSelect
    PaginationPageText
    PaginationPageText
    PaginationSelected
    PaginationSelected
    PaginationSizeSelect
    PaginationSizeSelect
    PaginationTotal
    PaginationTotal
Coral is a thoroughly developed design system widely adopted by developers and designers for creating beautiful and user-friendly Sea internal products.

Copyright Β© 2018-2025 Sea Labs