Breadcrumbs
Hierarchy trails built from native navigation, lists, links, and current-page text.
Breadcrumbs use directives on native list, link, and text elements.
import {
KuiBreadcrumbItem,
KuiBreadcrumbSeparator,
KuiBreadcrumbs,
} from '@kikita-labs/ui';Wrap the ordered list in a labelled navigation landmark and mark the final crumb as current.
<nav class="basic-breadcrumbs-example" aria-label="Breadcrumb">
<ol kuiBreadcrumbs>
<li><a kuiBreadcrumbItem href="/components">Components</a></li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem>Surfaces</span></li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem current>Breadcrumbs</span></li>
</ol>
</nav>Use a span without current for a grouping crumb that has no page of its own, as the middle crumb in the first example does. Only the last crumb carries current.
size scales the font, separators and spacing of the whole trail.
<div class="breadcrumbs-size-example">
<nav aria-label="Small breadcrumb">
<ol kuiBreadcrumbs size="sm">
<li><a kuiBreadcrumbItem href="/components">Components</a></li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem current>Small</span></li>
</ol>
</nav>
<nav aria-label="Medium breadcrumb">
<ol kuiBreadcrumbs>
<li><a kuiBreadcrumbItem href="/components">Components</a></li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem current>Medium</span></li>
</ol>
</nav>
<nav aria-label="Large breadcrumb">
<ol kuiBreadcrumbs size="lg">
<li><a kuiBreadcrumbItem href="/components">Components</a></li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem current>Large</span></li>
</ol>
</nav>
</div>The library does not enforce one collapse strategy. Truncate a middle crumb with .kui-breadcrumb-truncate on a non-wrapping trail, collapse hidden levels behind an ellipsis button wired to a kui-menu, or keep only the first and last crumbs at the narrowest breakpoint.
<div class="breadcrumbs-collapse-example">
<nav aria-label="Truncated breadcrumb">
<ol kuiBreadcrumbs class="breadcrumbs-collapse-example__trail">
<li><a kuiBreadcrumbItem href="#catalog">Catalog</a></li>
<li kuiBreadcrumbSeparator></li>
<li>
<a kuiBreadcrumbItem class="kui-breadcrumb-truncate" href="#audio">
Audio equipment and accessories
</a>
</li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem current>Headphones</span></li>
</ol>
</nav>
<nav aria-label="Collapsed breadcrumb">
<ol kuiBreadcrumbs>
<li><a kuiBreadcrumbItem href="#catalog">Catalog</a></li>
<li kuiBreadcrumbSeparator></li>
<li>
<button
class="kui-breadcrumb-ellipsis"
type="button"
aria-label="Show hidden levels"
[kuiMenuFor]="hiddenLevels"
>
…
</button>
</li>
<li kuiBreadcrumbSeparator></li>
<li><span kuiBreadcrumbItem current>Headphones</span></li>
</ol>
</nav>
<kui-menu #hiddenLevels ariaLabel="Hidden levels">
<a kuiMenuItem href="#electronics">Electronics</a>
<a kuiMenuItem href="#audio">Audio</a>
</kui-menu>
</div>Set defaults.breadcrumbs once for the application or for a subtree. Each option resolves as local input > defaults.breadcrumbs.<option> > built-in default.
import { provideKikitaUi } from '@kikita-labs/ui';
export const appConfig: ApplicationConfig = {
providers: [
provideKikitaUi({
defaults: {
breadcrumbs: {
/* options below */
},
},
}),
],
};| Name | Type | Default | Description |
|---|---|---|---|
| size | 'sm' | 'md' | 'lg' | — | Component size. Takes precedence over the global defaults.size. |
| separatorIcon | KuiIconGlyph | — | Icon between crumbs. Takes precedence over defaults.icons.separator. See Structural Icons. |
Set any of these on the component or an ancestor to restyle one part. Each token is optional: when it is not set, the part uses the role or scale token in the default column.
| Name | Type | Default | Description |
|---|---|---|---|
| --kui-breadcrumb-link-focus-ring-color | CSS custom property | --kui-color-focus | Link focus ring color |
| --kui-breadcrumb-sep-color | CSS custom property | --kui-color-text-secondary | Sep color |
| --kui-breadcrumb-ellipsis-color | CSS custom property | --kui-color-text-secondary | Ellipsis color |
| --kui-breadcrumb-ellipsis-bg-hover | CSS custom property | --kui-color-surface-elevated | Ellipsis background, hover |
| --kui-breadcrumb-ellipsis-color-hover | CSS custom property | --kui-color-text | Ellipsis color, hover |
| Name | Type | Default | Description |
|---|---|---|---|
| --kui-breadcrumb-font-size | CSS custom property | --kui-text-sm-size | Font size |
| --kui-breadcrumb-link-radius | CSS custom property | --kui-radius-sm | Link corner radius |
| --kui-breadcrumb-link-gap | CSS custom property | --kui-space-1 | Link gap |
| --kui-breadcrumb-plain-gap | CSS custom property | --kui-space-1 | Plain gap |
| --kui-breadcrumb-current-gap | CSS custom property | --kui-space-1 | Current gap |
| --kui-breadcrumb-ellipsis-padding-inline | CSS custom property | --kui-space-1 | Ellipsis padding, inline |
| --kui-breadcrumb-ellipsis-radius | CSS custom property | --kui-radius-sm | Ellipsis corner radius |
| --kui-breadcrumb-font-size-sm | CSS custom property | --kui-text-xs-size | Font size, sm |
| --kui-breadcrumb-font-size-lg | CSS custom property | --kui-text-md-size | Font size, lg |
| --kui-breadcrumb-ellipsis-height | CSS custom property | 22px | Ellipsis button height |
| --kui-breadcrumb-ellipsis-height-sm | CSS custom property | 18px | Ellipsis button height, sm |
| --kui-breadcrumb-ellipsis-height-lg | CSS custom property | 26px | Ellipsis button height, lg |
| --kui-breadcrumb-icon-size-sm | CSS custom property | 12px | Separator and icon size, sm |
| --kui-breadcrumb-icon-size-lg | CSS custom property | 16px | Separator and icon size, lg |
| --kui-breadcrumb-truncate-max-width | CSS custom property | 140px | Maximum width of a truncated item |
Inputs verified against @kikita-labs/ui v2.0.0 public typings.
| Name | Type | Default | Description |
|---|---|---|---|
| ol[kuiBreadcrumbs].size | 'sm' | 'md' | 'lg' | 'md' | Font size, separator scale, and spacing for the full trail. Falls back to defaults.breadcrumbs.size, then the global defaults.size. |
| a[kuiBreadcrumbItem] | directive | - | Native link crumb for navigable hierarchy levels. |
| span[kuiBreadcrumbItem] | directive | - | Plain-text crumb for grouping labels or the current page. |
| span[kuiBreadcrumbItem].current | boolean | false | Marks the final crumb as the current page and sets aria-current. |
| li[kuiBreadcrumbSeparator] | component | - | Decorative separator list item hidden from assistive technology. |
| .kui-breadcrumb-truncate | CSS class | - | Added to the crumb that should shrink with an ellipsis; keep the trail non-wrapping. The maximum width is --kui-breadcrumb-truncate-max-width. |
| button.kui-breadcrumb-ellipsis | CSS class | - | Styles a button that stands in for hidden crumbs. Breadcrumbs does not manage the menu; wire it to kui-menu or kui-dropdown yourself. |
| span.kui-breadcrumb-icon | CSS class | - | Optional leading icon wrapper, on the first crumb only. |
| KuiBreadcrumbsOptions | interface | - | Shape of defaults.breadcrumbs: size and separatorIcon (takes precedence over defaults.icons.separator). |
The component keeps native semantics visible instead of replacing navigation with custom widgets.
Consumer-visible changes of @kikita-labs/ui 2.0 for Breadcrumbs.