Pagination
Navegación de páginas que mantiene cada botón en su sitio, se desliza hasta la página actual y salta a cualquier página desde los puntos suspensivos.
Showing 1–10 of 248 results
pnpm dlx shadcn@latest add https://hextaui.com/r/pagination.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cnCopia y pega el siguiente código en tu proyecto.
components/ui/pagination.tsx components/ui/button.tsx lib/motion.ts Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Dale a Pagination un count y construye toda la barra. Siempre muestra el mismo número de huecos, así que Previous, Next y los números nunca se mueven bajo el cursor mientras pasas de página. Omite count para componer las partes tú mismo.
Saltar a una página
Haz clic en unos puntos suspensivos para escribir un número de página. Enter salta, un número fuera de rango hace vibrar el campo y Esc devuelve los puntos suspensivos. Desactívalo con jump={false}.
Compacto
Cuando la barra no cabe en su contenedor, cambia a Previous, “Page 4 of 24” y Next, y vuelve cuando hay espacio. La etiqueta también es un campo de salto. Fuerza cualquiera de los dos diseños con compact.
Enlaces
Con getPageHref, cada página es un enlace real, por lo que puede abrirse en una pestaña nueva. Los clics normales siguen llamando a onPageChange.
Componible
Sin count, construye la barra con las partes, como en shadcn/ui. Pasa render para usar el enlace de tu router.
De derecha a izquierda
usePagination devuelve los elementos de página y de puntos suspensivos para diseños personalizados. Los chevrons se invierten en texto de derecha a izquierda.
| Key | Acción |
|---|---|
| Tab | Entra y sale de la barra. Previous y Next siguen siendo enfocables en los extremos. |
| ←→ | Se mueve entre Previous, las páginas y Next. Se invierte en diseños de derecha a izquierda. |
| HomeEnd | Va al primer o al último elemento. |
| Enter | Abre la página enfocada o el campo de página. En el campo, salta a esa página y la enfoca. |
| Esc | Cierra el campo de página y devuelve el foco a los puntos suspensivos. |
- La raíz es un
<nav>con la etiqueta “Pagination”, y la página actual tienearia-current="page". - En la primera y la última página, Previous y Next usan
aria-disableden lugar dedisabled, así que el foco no se pierde al llegar al final. - El indicador deslizante se convierte en un fundido cuando el movimiento reducido está activado.
| Prop | Tipo | Predeterminado |
|---|---|---|
countTotal de páginas. Si se define, la barra se construye por ti; omítelo para componer las partes. | number | – |
page | number | – |
defaultPage | number | 1 |
onPageChange | (page: number) => void | – |
getPageHrefRenderiza las páginas como enlaces en lugar de botones. | (page: number) => string | – |
siblingsPáginas que se muestran a cada lado de la actual. | number | 1 |
boundariesPáginas que se muestran siempre al principio y al final. | number | 1 |
compactauto cambia a Previous, “Page x of y” y Next cuando la barra no cabe. | boolean | "auto" | "auto" |
jumpPermite que los puntos suspensivos abran un campo de página. | boolean | true |
| Atributo | Descripción |
|---|---|
data-slot="pagination" | El nav. |
data-slot="pagination-indicator" | El fondo que se desliza hasta la página actual. |
| Prop | Tipo | Predeterminado |
|---|---|---|
isActiveMarca la página actual con aria-current="page". | boolean | false |
disabledDefine aria-disabled e ignora los clics. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <a> |
| Atributo | Descripción |
|---|---|
data-slot="pagination-link" | Apunta a los enlaces de página en CSS. |
data-active | Presente en la página actual. |
| Prop | Tipo | Predeterminado |
|---|---|---|
textPasa null para un botón solo con icono. | ReactNode | "Previous" / "Next" |
disabled | boolean | false |
| Prop | Tipo | Predeterminado |
|---|---|---|
onJumpConvierte los puntos suspensivos en un campo de página. Sin él, los puntos suspensivos son decorativos. | (page: number) => void | – |
countLa página más alta que acepta el campo. | number | – |
| Prop | Tipo | Predeterminado |
|---|---|---|
page | number | – |
count | number | – |
siblings | number | 1 |
boundaries | number | 1 |
Devuelve items, la page y el count ajustados, y hasPrevious y hasNext. Consulta la guía de usePagination para construir tu propio paginador.
- ButtonBotones en todas las variantes y tamaños, con un flujo integrado de carga, éxito y error que omite el spinner en las peticiones rápidas.
- MotionLas curvas de easing, duraciones y la comprobación de movimiento reducido con las que se anima cada componente, además de hooks para transformaciones de tamaño y resaltados deslizantes.
- usePaginationConvierte una página y un número de páginas en la lista de páginas y puntos suspensivos que se renderizan, manteniendo su longitud estable mientras la página cambia.
- BreadcrumbUn rastro de enlaces hasta la página actual que se ajusta de forma segura, se refleja en diseños de derecha a izquierda y expande los segmentos colapsados en su lugar.
- Navigation menuNavegación del sitio con menús desplegables, o un panel de ancho completo que permanece abierto mientras su contenido se desliza entre menús.
- SidebarUna barra lateral de la app que se contrae a iconos o fuera del lienzo, se mantiene fija bajo tu encabezado y se convierte en una hoja deslizable en móviles.