Numbered pagination with ellipses and a constant number of slots (the bar never jumps), previous/next, a compact “Page x of y” mode; the CSS styles work on their own for server-rendered links.
Current page (1-based, clamped). Updated on click.
siblings
number
1
Pages shown on each side of the current page.
boundaries
number
1
Pages always shown at the start and end.
compact
boolean
Replaces the numbers with “Page x of y”.
hide-labels
boolean
Icon-only Previous/Next (labels kept for screen readers).
prev-label / next-label
string
Previous / Next
Arrow labels.
label
string
Pagination
Landmark aria-label.
data-variant
outline | solid | pill
(ghost)
Style: ghost buttons with an outlined current page; all outlined; accent-filled current page; rounded track.
data-size
sm
Smaller buttons.
Properties
Name
Type
Description
pageCount
number
Effective page count (read-only).
current
number
Clamped current page (read-only).
strings
Partial<Record<string, string>>
Overrides for the default text (en-US): arrow (previous/next button name, {label} and {page} placeholders), page (page button name, {page}), status (compact status, {page} and {total}, each shown in <strong>). App-wide translations: setStrings() from core/i18n.js, under the key "pagination". Can be set before the element is defined.
Static: list of numbers and “ellipsis” entries to render (reusable server-side).
Events
Name
Description
mv-change
Cancelable (preventDefault keeps the page). detail: { page, previous }.
CSS classes
Name
Description
mv-pagination
On <nav aria-label> (or set automatically on the element).
mv-pagination-item
Page button or link; aria-current="page" for the current page.
mv-pagination-prev / -next
Arrows; aria-disabled="true" at either end.
mv-pagination-ellipsis
Ellipsis (automatic icon when empty), inside an <li aria-hidden="true">.
mv-pagination-status
“Page 3 of 20” text.
CSS variables
Name
Default
Description
--mv-pagination-radius
var(--mv-radius-md)
Button radius.
Accessibility
Labeled navigation landmark, aria-current="page" on the current page, each number announced as “Page n”. Arrows at either end stay focusable with aria-disabled so focus is never lost; after a page change, focus stays on the same button. In compact mode, the status is announced (aria-live).