componente · @solu30/ui-kit/navigation
BreadcrumbsFromPath
Migas de pan derivadas del pathname actual, con un mapa opcional de nombres por segmento.
2 sitios de import en 2 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- carlosmartinpavon
- cmp-packages
El componente, montado
Cargando el espécimen…
export function HeaderBarSpecimen() {
return (
<Stage label="HeaderBar · el encabezado sticky de Zentrya — el wrapper es del consumidor, no del kit" tall wide>
<div className="flex w-full flex-col gap-6">
<div className="overflow-hidden rounded-xl border border-content/10">
{/* El wrapper textual de `admin-page-header.tsx:37`. `sticky` no
hace nada acá dentro (no hay scroll propio), pero se copia para
que se vea de qué se hace cargo el consumidor. */}
<div className="sticky top-0 z-10 border-b border-content/10 bg-container shadow-sm">
<HeaderBar
title="Mensajería"
subtitle="3 canales conectados"
breadcrumbs={[{ label: 'Zentrya' }, { label: 'Mensajería', onClick: () => {} }]}
actions={
<Button variant="secondary" size="sm" icon={IconSettings}>
Configurar
</Button>
}
/>
</div>
<div className="space-y-2 bg-bkg p-4">
<div className="h-16 rounded-lg bg-container" />
<div className="h-16 rounded-lg bg-container" />
</div>
</div>
<div className="flex flex-col gap-2 rounded-xl border border-content/10 bg-container p-4">
<span className="text-[10px] uppercase tracking-wide text-content/50">
BreadcrumbsFromPath — deriva los crumbs de un pathname, no de un array a mano
</span>
<BreadcrumbsFromPath
pathname="/admin/saas/projects/prj_gs/roadmap"
routeLabels={{
saas: 'SolaaS',
projects: 'Projects',
prj_gs: 'GestorSalon',
roadmap: 'Roadmap',
}}
skipLeadingSegments={1}
renderLink={(_href, label) => (
<span className="max-w-[150px] truncate text-content/60 transition-colors hover:text-content">
{label}
</span>
)}
/>
<p className="text-[11px] text-content/60">
`skipLeadingSegments={1}` se come el `/admin` de adelante; los ids de proyecto
(`prj_gs`) se traducen por `routeLabels`, que es un diccionario plano segmento →
etiqueta.
</p>
</div>
</div>
</Stage>
)
}De specimens/navigation.tsx · HeaderBarSpecimen: el espécimen del Muestrario, no un ejemplo oficial del paquete. Muestra cómo se usa la pieza de verdad, montada contra los tipos instalados —eso es lo que vale— pero no es documentación del kit.
Cómo se usa
import { BreadcrumbsFromPath } from '@solu30/ui-kit/navigation'Props
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| pathname | sí | string | Current URL pathname (e.g. "/admin/projects/prj_tcp"). Typically from `usePathname()` in Next.js or `useLocation().pathname` in React Router. |
| routeLabels | opcional | Record<string, string> | Map of path segment → human-readable label. Segments not found here are title-cased automatically. |
| skipLeadingSegments | opcional | number | Number of leading segments to skip before showing breadcrumbs. Defaults to 1 (e.g. hides the root "/admin" segment). |
| renderLink | opcional | (href: string, label: string) => React__default.ReactNode | Render a link for non-terminal crumbs. Defaults to a plain `<a>` element. @param href - The full href for this crumb @param label - The display label |
| className | opcional | string | Additional class names for the nav element. |