Breadcrumb
A navigational aid that displays the current page's location within a site hierarchy.
The Breadcrumb component displays a hierarchical navigation trail showing the user's current position within an app. It supports links, separators, ellipsis for truncated paths, and a compound component API for flexible customization.
Preview
Installation
npx novaui-cli add breadcrumbDependencies
lucide-react-native>= 0.300
Import
import {
Breadcrumb,
BreadcrumbList,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbPage,
BreadcrumbSeparator,
BreadcrumbEllipsis,
} from 'novaui-components'Basic Usage
The Breadcrumb is a compound component with these parts:
Breadcrumb- Rootnavcontainer with accessibility roleBreadcrumbList- Horizontal list of breadcrumb itemsBreadcrumbItem- Individual item containerBreadcrumbLink- Clickable link for navigable itemsBreadcrumbPage- Non-clickable current page indicatorBreadcrumbSeparator- Chevron separator between itemsBreadcrumbEllipsis- Ellipsis indicator for collapsed paths
import {
Breadcrumb,
BreadcrumbList,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbPage,
BreadcrumbSeparator,
} from 'novaui-components'
export function BasicBreadcrumb() {
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink onPress={() => navigation.navigate('Home')}>
Home
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink onPress={() => navigation.navigate('Components')}>
Components
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
)
}With Ellipsis
Use BreadcrumbEllipsis to truncate long navigation paths:
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink>Home</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbEllipsis />
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink>Components</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>Custom Separator
Override the default chevron separator with a custom element:
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink>Home</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<Text className="text-muted-foreground">/</Text>
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbLink>Components</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<Text className="text-muted-foreground">/</Text>
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>Props API
Breadcrumb Props
Extends React.ComponentPropsWithoutRef<typeof View>:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbList Props
Extends React.ComponentPropsWithoutRef<typeof View>:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbItem Props
Extends React.ComponentPropsWithoutRef<typeof View>:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbLink Props
Extends React.ComponentPropsWithoutRef<typeof Pressable>:
| Prop | Type | Default | Description |
|---|---|---|---|
asChild | boolean | false | Render as the child element instead of a Pressable |
className | string | - | Additional CSS classes |
BreadcrumbPage Props
Extends React.ComponentPropsWithoutRef<typeof Text>:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbSeparator Props
Extends React.ComponentPropsWithoutRef<typeof View>:
| Prop | Type | Default | Description |
|---|---|---|---|
children | React.ReactNode | <ChevronRight /> | Custom separator element (default is a chevron icon) |
className | string | - | Additional CSS classes |
BreadcrumbEllipsis Props
Extends React.ComponentPropsWithoutRef<typeof View>:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
Accessibility
- Root element uses
role="navigation"witharia-label="breadcrumb" - Separators use
role="presentation"andaria-hidden={true} - Current page uses
aria-current="page"andaria-disabled={true}
Best Practices
-
Show the full path: Include the root page (Home) and the current page in the trail
-
Use ellipsis for deep paths: If the path exceeds 4-5 levels, collapse middle items with
BreadcrumbEllipsis -
Current page is not a link: Use
BreadcrumbPagefor the current page — it's non-interactive and styled differently -
Consistent separators: Stick with one separator style throughout the app — chevron is the standard
-
Don't use for primary navigation: Breadcrumbs supplement, not replace, your main navigation
Related Components
- Use with
ButtonorPressablefor link actions within breadcrumb items - Combine with page headers for contextual navigation