Skip to content
Navigation

Breadcrumb

The trail to the current page. Routing is yours — the link part is a styled anchor, not a router link.

Added 14 October 2026

React

Codecomponents/react/breadcrumb-demo.tsx
import {
    Breadcrumb,
    BreadcrumbEllipsis,
    BreadcrumbItem,
    BreadcrumbLink,
    BreadcrumbList,
    BreadcrumbPage,
    BreadcrumbSeparator,
} from '@stroeer-labs/design-library/react';

export function BreadcrumbDemo() {
    return (
        <div className="space-y-6">
            <div className="space-y-2">
                <p className="text-xs font-medium text-muted-foreground">Full trail</p>
                <Breadcrumb aria-label="Full trail example">
                    <BreadcrumbList>
                        <BreadcrumbItem>
                            <BreadcrumbLink href="#">Campaigns</BreadcrumbLink>
                        </BreadcrumbItem>
                        <BreadcrumbSeparator />
                        <BreadcrumbItem>
                            <BreadcrumbLink href="#">Q3 Outdoor</BreadcrumbLink>
                        </BreadcrumbItem>
                        <BreadcrumbSeparator />
                        <BreadcrumbItem>
                            <BreadcrumbPage>Line items</BreadcrumbPage>
                        </BreadcrumbItem>
                    </BreadcrumbList>
                </Breadcrumb>
            </div>
            <div className="space-y-2">
                <p className="text-xs font-medium text-muted-foreground">Collapsed middle</p>
                <Breadcrumb aria-label="Collapsed trail example">
                    <BreadcrumbList>
                        <BreadcrumbItem>
                            <BreadcrumbLink href="#">Home</BreadcrumbLink>
                        </BreadcrumbItem>
                        <BreadcrumbSeparator />
                        <BreadcrumbItem aria-hidden="true">
                            <BreadcrumbEllipsis />
                        </BreadcrumbItem>
                        <BreadcrumbSeparator />
                        <BreadcrumbItem>
                            <BreadcrumbLink href="#">Fine tuning</BreadcrumbLink>
                        </BreadcrumbItem>
                        <BreadcrumbSeparator />
                        <BreadcrumbItem>
                            <BreadcrumbPage>Schedule</BreadcrumbPage>
                        </BreadcrumbItem>
                    </BreadcrumbList>
                </Breadcrumb>
            </div>
            <div className="space-y-2">
                <p className="text-xs font-medium text-muted-foreground">Custom separator</p>
                <Breadcrumb aria-label="Custom separator example">
                    <BreadcrumbList>
                        <BreadcrumbItem>
                            <BreadcrumbLink href="#">Inventory</BreadcrumbLink>
                        </BreadcrumbItem>
                        <BreadcrumbSeparator>/</BreadcrumbSeparator>
                        <BreadcrumbItem>
                            <BreadcrumbPage>Prague</BreadcrumbPage>
                        </BreadcrumbItem>
                    </BreadcrumbList>
                </Breadcrumb>
            </div>
        </div>
    );
}

Angular

Codecomponents/angular/breadcrumb-demo.ts
import {Component} from '@angular/core';
import {HlmBreadcrumbImports} from '@stroeer-labs/design-library/angular';

// Mirrors the React breadcrumb demo. Note the links carry plain `href` here too: this library deliberately does
// NOT compose Angular's RouterLink (see the component's PARITY NOTE), so an app adds `routerLink` itself.
@Component({
    selector: 'dl-breadcrumb-demo',
    standalone: true,
    imports: [HlmBreadcrumbImports],
    template: `
        <div class="space-y-6">
            <div class="space-y-2">
                <p class="text-xs font-medium text-muted-foreground">Full trail</p>
                <nav hlmBreadcrumb aria-label="Full trail example">
                    <ol hlmBreadcrumbList>
                        <li hlmBreadcrumbItem><a hlmBreadcrumbLink href="#">Campaigns</a></li>
                        <li hlmBreadcrumbSeparator></li>
                        <li hlmBreadcrumbItem><a hlmBreadcrumbLink href="#">Q3 Outdoor</a></li>
                        <li hlmBreadcrumbSeparator></li>
                        <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Line items</span></li>
                    </ol>
                </nav>
            </div>
            <div class="space-y-2">
                <p class="text-xs font-medium text-muted-foreground">Collapsed middle</p>
                <nav hlmBreadcrumb aria-label="Collapsed trail example">
                    <ol hlmBreadcrumbList>
                        <li hlmBreadcrumbItem><a hlmBreadcrumbLink href="#">Home</a></li>
                        <li hlmBreadcrumbSeparator></li>
                        <li hlmBreadcrumbItem aria-hidden="true"><hlm-breadcrumb-ellipsis /></li>
                        <li hlmBreadcrumbSeparator></li>
                        <li hlmBreadcrumbItem><a hlmBreadcrumbLink href="#">Fine tuning</a></li>
                        <li hlmBreadcrumbSeparator></li>
                        <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Schedule</span></li>
                    </ol>
                </nav>
            </div>
            <div class="space-y-2">
                <p class="text-xs font-medium text-muted-foreground">Custom separator</p>
                <nav hlmBreadcrumb aria-label="Custom separator example">
                    <ol hlmBreadcrumbList>
                        <li hlmBreadcrumbItem><a hlmBreadcrumbLink href="#">Inventory</a></li>
                        <li hlmBreadcrumbSeparator>/</li>
                        <li hlmBreadcrumbItem><span hlmBreadcrumbPage>Prague</span></li>
                    </ol>
                </nav>
            </div>
        </div>
    `,
})
export class BreadcrumbDemoComponent {}