Breadcrumb
Un 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.
pnpm dlx shadcn@latest add https://hextaui.com/r/breadcrumb.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 cnCopia y pega el siguiente código en tu proyecto.
components/ui/breadcrumb.tsx lib/motion.ts Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Con iconos
Los iconos van dentro de los enlaces y de la página actual. Dale un aria-label a un enlace que solo tenga icono.
Separador personalizado
Pasa cualquier elemento como children de <BreadcrumbSeparator /> para reemplazar el chevron.
Dropdown
Renderiza un <BreadcrumbLink /> como trigger de un <DropdownMenu /> para ofrecer páginas hermanas.
Colapsado
Envuelve los segmentos intermedios en <BreadcrumbCollapse />. Se ocultan tras unos puntos suspensivos y se deslizan abiertos en su sitio, y el foco pasa al primer enlace revelado. Pasa open y onOpenChange para controlarlo.
Puntos suspensivos
Un <BreadcrumbEllipsis /> estático marca los niveles omitidos. Está oculto para las tecnologías de asistencia salvo que lo hagas interactivo.
Componente de enlace
Usa la prop render para cambiar el ancla por el enlace de tu router, como <Link /> de Next.js.
Contenido largo
Los nombres sin espacios se ajustan en lugar de desbordarse, y los segmentos con un ancho máximo se truncan.
De derecha a izquierda
Los separadores se invierten y el colapso se anima desde el lado correcto.
Los enlaces y el botón de colapso son paradas normales del tabulador. Los separadores y unos puntos suspensivos estáticos se omiten.
| Key | Acción |
|---|---|
| TabShift + Tab | Se mueve entre los enlaces y el botón de colapso. |
| Enter | Sigue al enlace con foco. |
| EnterSpace | En el botón de colapso, muestra los segmentos ocultos. Cuando terminan de deslizarse abiertos, el foco pasa al primer enlace revelado. |
Cada parte acepta los atributos del elemento que renderiza, además de una prop render para cambiar ese elemento.
| Prop | Tipo | Predeterminado |
|---|---|---|
renderEtiquetado como “Breadcrumb” para las tecnologías de asistencia. | ReactElement | (props, state) => ReactElement | <nav> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb" | El landmark <nav>. |
| Prop | Tipo | Predeterminado |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <ol> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-list" | La lista ordenada. Los elementos pasan a nuevas líneas cuando se acaba el espacio. |
| Prop | Tipo | Predeterminado |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <li> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-item" | Apunta a los elementos en CSS. |
data-collapsed | Presente mientras el elemento está oculto dentro de un BreadcrumbCollapse cerrado. |
data-breadcrumb-group | Presente en los elementos dentro de un BreadcrumbCollapse. Lo comparten todas las partes del mismo grupo. |
| Prop | Tipo | Predeterminado |
|---|---|---|
href | string | – |
renderPasa aquí el componente de enlace de tu router. | ReactElement | (props, state) => ReactElement | <a> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-link" | Selecciona los enlaces en CSS. |
| Prop | Tipo | Predeterminado |
|---|---|---|
renderMarcado con aria-current="page". | ReactElement | (props, state) => ReactElement | <span> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-page" | La página actual, con aria-current="page". |
| Prop | Tipo | Predeterminado |
|---|---|---|
childrenSe refleja automáticamente en diseños de derecha a izquierda. | ReactNode | <IconChevronRight /> |
render | ReactElement | (props, state) => ReactElement | <li> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-separator" | Solo de presentación y oculto para las tecnologías de asistencia. |
data-collapsed | Presente mientras el separador está oculto dentro de un BreadcrumbCollapse cerrado. |
data-breadcrumb-group | Presente en los separadores dentro de un BreadcrumbCollapse. |
| Prop | Tipo | Predeterminado |
|---|---|---|
children | ReactNode | <IconDots /> |
renderOculto para las tecnologías de asistencia salvo que render u onClick lo haga interactivo. | ReactElement | (props, state) => ReactElement | <span> |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-ellipsis" | Selecciona los puntos suspensivos en CSS. |
| Prop | Tipo | Predeterminado |
|---|---|---|
childrenLos elementos y separadores que se ocultan tras los puntos suspensivos. | ReactNode | – |
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open: boolean) => void | – |
labelNombre accesible del botón de puntos suspensivos. | string | "Show full path" |
| Atributo | Descripción |
|---|---|
data-slot="breadcrumb-collapse" | El <li> que contiene el botón de puntos suspensivos. |
data-collapsed | Presente en el elemento de puntos suspensivos una vez que el grupo se ha abierto, lo que lo oculta. |
- 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.
- 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.
- PaginationNavegació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.
- 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.
- TabsCambia entre vistas con un indicador que se desliza hasta la pestaña activa, como control segmentado o con subrayado, y listas que se desplazan cuando desbordan.