md-breadcrumbs spec card
Identity · when to use / when NOT · decision cues · behavioural contract · do/don't · anti-patterns · full API. Paste into your agent when you're implementing with this component.
Where the user is in a hierarchy, and the way back up. Renders a trail of
md-breadcrumb-item children as a labelled
navigation region with separators, and collapses the middle of a long trail
behind an overflow control.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library/data">Data</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
Already installed? See the
Installation guide for one-time package setup
(core + tokens, fonts). Each tab below shows two patterns for using
md-breadcrumbs in your project: Option A registers every AWC UI
component at once (simplest), Option B imports only this component for
tree-shake-friendly bundles.
<!-- ─── Option A: global registration (all components) ─── -->
<script type="module">
import '@awc-ui/core/define';
</script>
<!-- ─── Option B: single import (tree-shake only md-breadcrumbs) ─── -->
<script type="module">
import '@awc-ui/core/components/md-breadcrumbs';
</script>
<md-breadcrumbs></md-breadcrumbs>// ─── Option A: typed React wrapper (registers all components) ───
// Importing from '@awc-ui/react' calls defineCustomElements() as a
// side effect, so every md-* element becomes available in the browser.
import { MdBreadcrumbs } from '@awc-ui/react';
export function Example() {
return <MdBreadcrumbs></MdBreadcrumbs>;
}
// ─── Option B: single import (tree-shake to only md-breadcrumbs) ───
// Skip the wrapper and use the raw custom element. Smallest bundle,
// but you lose typed props/events on JSX.
import '@awc-ui/core/components/md-breadcrumbs';
export function ExampleTreeShaken() {
return <md-breadcrumbs></md-breadcrumbs>;
}// ─── Option A: schema module (any md-* element accepted) ───
// Pair with `defineCustomElements(window)` in main.ts.
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@Component({
standalone: true,
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
template: `<md-breadcrumbs></md-breadcrumbs>`,
})
export class ExampleComponent {}
// ─── Option B: typed directive (tree-shake friendly) ───
// Pair with `import '@awc-ui/core/components/md-breadcrumbs'` in main.ts.
import { Component } from '@angular/core';
import { MdBreadcrumbs } from '@awc-ui/angular';
@Component({
standalone: true,
imports: [MdBreadcrumbs],
template: `<md-breadcrumbs></md-breadcrumbs>`,
})
export class ExampleTreeShakenComponent {}<!-- ─── Option A: typed Vue wrapper (registers all components) ─── -->
<script setup lang="ts">
import { MdBreadcrumbs } from '@awc-ui/vue';
</script>
<template>
<MdBreadcrumbs></MdBreadcrumbs>
</template>
<!-- ─── Option B: single import (tree-shake to only md-breadcrumbs) ─── -->
<script setup lang="ts">
import '@awc-ui/core/components/md-breadcrumbs';
</script>
<template>
<md-breadcrumbs></md-breadcrumbs>
</template><!-- ─── Option A: global registration (done once in main entry) ─── -->
<!-- main.ts: -->
<!-- import { defineCustomElements } from '@awc-ui/svelte'; -->
<!-- defineCustomElements(window); -->
<md-breadcrumbs></md-breadcrumbs>
<!-- ─── Option B: single import (tree-shake to only md-breadcrumbs) ─── -->
<script lang="ts">
import '@awc-ui/core/components/md-breadcrumbs';
</script>
<md-breadcrumbs></md-breadcrumbs>| Situation | Use instead |
|---|---|
| A flat site with 2–3 destinations | md-navigation-bar / md-tabs |
| A linear process | md-stepper |
| Sibling views within a screen | md-tabs |
| Top-level navigation | md-navigation-rail / md-navigation-bar |
| Undo/back only | A back md-icon-button in md-app-bar |
| A single level deep | Nothing — the page header says it |
| Need | Setting |
|---|---|
| Mark the page you are on | current on the last crumb |
| A different separator glyph | separator="›" |
| Fold a long trail | max-items > 0 |
| Keep more crumbs at the ends | items-before-collapse / items-after-collapse |
| A leading glyph on a crumb | icon prop, or the icon slot |
| Announce a level without linking it | disabled |
| Tighter rows | density="-1…-4" |
You render the crumbs. The component does not read your router, your URL, or your route table — it lays out the children you give it, in DOM order, and that order is the hierarchy the user sees and hears.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>Two rules that are easy to get wrong:
current. It is the page you are on, so it
renders as static text, not a link. The component auto-promotes the last
child to current unless you have explicitly marked a different one, but
marking it yourself is clearer — and never give a current crumb an href.Breadcrumbs also supplement navigation. They tell the user where they are and let them jump up a level; they are not a substitute for a nav bar or rail. If the only way out of a page is the trail, the navigation is broken.
A crumb takes a leading glyph from the icon prop, or from its icon slot
when you need custom artwork. The slot wins over the prop. An icon is decoration
on top of the label — never the crumb’s only content, or the level loses its
accessible name.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Icon prop">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data" icon="database">Data</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Slotted icon">
<md-breadcrumb-item href="/">
<svg slot="icon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
Home
</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '20px', inlineSize: '100%' }}>
<MdBreadcrumbs label="Icon prop">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library" icon="folder">Library</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library/data" icon="database">Data</MdBreadcrumbItem>
<MdBreadcrumbItem current icon="table">Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
<MdBreadcrumbs label="Slotted icon">
<MdBreadcrumbItem href="/">
<svg slot="icon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
Home
</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Icon prop">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data" icon="database">Data</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Slotted icon">
<md-breadcrumb-item href="/">
<svg slot="icon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
Home
</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Icon prop">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data" icon="database">Data</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Slotted icon">
<md-breadcrumb-item href="/">
<svg slot="icon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
Home
</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Icon prop">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data" icon="database">Data</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Slotted icon">
<md-breadcrumb-item href="/">
<svg slot="icon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
Home
</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>The current crumb’s icon swaps to the filled (FILL=1) face, so “you are here”
reads at a glance rather than only from the missing link styling.
disabled renders the level without an anchor and out of the tab order. The
crumb is still announced, so the hierarchy stays intact — it simply cannot be
navigated to. Use it for a level that exists structurally but has no page of its
own, not to signal “loading”.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item disabled>Archive</md-breadcrumb-item>
<md-breadcrumb-item href="/archive/2026">2026</md-breadcrumb-item>
<md-breadcrumb-item current>Q3</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem disabled>Archive</MdBreadcrumbItem>
<MdBreadcrumbItem href="/archive/2026">2026</MdBreadcrumbItem>
<MdBreadcrumbItem current>Q3</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item disabled>Archive</md-breadcrumb-item>
<md-breadcrumb-item href="/archive/2026">2026</md-breadcrumb-item>
<md-breadcrumb-item current>Q3</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item disabled>Archive</md-breadcrumb-item>
<md-breadcrumb-item href="/archive/2026">2026</md-breadcrumb-item>
<md-breadcrumb-item current>Q3</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item disabled>Archive</md-breadcrumb-item>
<md-breadcrumb-item href="/archive/2026">2026</md-breadcrumb-item>
<md-breadcrumb-item current>Q3</md-breadcrumb-item>
</md-breadcrumbs>When the trail exceeds max-items, the middle crumbs hide behind a ”…”
overflow button.
| Prop | Default | Meaning |
|---|---|---|
max-items | 0 | Collapse only when the crumb count exceeds this. 0 disables collapsing |
items-before-collapse | 1 | Crumbs always kept at the start |
items-after-collapse | 2 | Crumbs always kept at the end |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs max-items="4" items-before-collapse="1" items-after-collapse="2">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c/d">Billing</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs maxItems="4" itemsBeforeCollapse="1" itemsAfterCollapse="2">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c">Services</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c/d">Billing</MdBreadcrumbItem>
<MdBreadcrumbItem current>Invoices</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs max-items="4" items-before-collapse="1" items-after-collapse="2">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c/d">Billing</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs max-items="4" items-before-collapse="1" items-after-collapse="2">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c/d">Billing</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-breadcrumbs max-items="4" items-before-collapse="1" items-after-collapse="2">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c/d">Billing</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>expand() and collapse() drive the same state programmatically. Both emit
mdExpand whenever the boolean actually changes — including when collapsing is
disabled, where only the visual result is a no-op. With max-items="0",
expand() still fires mdExpand{ expanded: true } even though the trail was
already fully visible, so guard on max-items in your own listener rather than
assuming the event implies a layout change.
Collapsing is what makes a trail survive a narrow column. The same five crumbs,
with progressively tighter max-items:
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="No collapsing">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 4" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 3" max-items="3" items-before-collapse="1" items-after-collapse="1">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '20px', inlineSize: '100%' }}>
<MdBreadcrumbs label="No collapsing">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c">Services</MdBreadcrumbItem>
<MdBreadcrumbItem current>Billing</MdBreadcrumbItem>
</MdBreadcrumbs>
<MdBreadcrumbs label="max-items 4" maxItems="4">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c">Services</MdBreadcrumbItem>
<MdBreadcrumbItem current>Billing</MdBreadcrumbItem>
</MdBreadcrumbs>
<MdBreadcrumbs label="max-items 3" maxItems="3" itemsBeforeCollapse="1" itemsAfterCollapse="1">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c">Services</MdBreadcrumbItem>
<MdBreadcrumbItem current>Billing</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="No collapsing">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 4" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 3" max-items="3" items-before-collapse="1" items-after-collapse="1">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="No collapsing">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 4" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 3" max-items="3" items-before-collapse="1" items-after-collapse="1">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="No collapsing">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 4" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="max-items 3" max-items="3" items-before-collapse="1" items-after-collapse="1">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
</div>separator takes a short string — / (default), ›, →, ». The parent
owns it: every crumb reads the glyph from the parent and renders its own
leading separator, so the trail stays visually uniform.
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs separator="›">
<md-breadcrumb-item href="/">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs separator="›">
<MdBreadcrumbItem href="/">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs separator="›">
<md-breadcrumb-item href="/">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs><script setup>
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs separator="›">
<md-breadcrumb-item href="/">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
import '@awc-ui/core/define';
</script>
<md-breadcrumbs separator="›">
<md-breadcrumb-item href="/">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs><!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs separator="/"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="›"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="→"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="»"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="•"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div>import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '20px', inlineSize: '100%' }}>
<MdBreadcrumbs separator="/"><MdBreadcrumbItem href="/">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<MdBreadcrumbs separator="›"><MdBreadcrumbItem href="/">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<MdBreadcrumbs separator="→"><MdBreadcrumbItem href="/">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<MdBreadcrumbs separator="»"><MdBreadcrumbItem href="/">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<MdBreadcrumbs separator="•"><MdBreadcrumbItem href="/">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
</div>
</>
);
}// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs separator="/"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="›"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="→"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="»"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="•"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div><script setup>
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs separator="/"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="›"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="→"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="»"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="•"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div>
</template><script>
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs separator="/"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="›"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="→"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="»"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<md-breadcrumbs separator="•"><md-breadcrumb-item href="/">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div>::part<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<style>
/* md-breadcrumbs exposes a separator part too (the one before the …
toggle), so a full restyle needs both selectors. */
.svg-sep::part(separator),
.svg-sep md-breadcrumb-item::part(separator) {
color: transparent;
inline-size: 16px;
background: center / 12px no-repeat
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23888'><path d='M9 6l6 6-6 6z'/></svg>");
}
</style>
<md-breadcrumbs class="svg-sep" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<style>
/* md-breadcrumbs exposes a separator part too (the one before the …
toggle), so a full restyle needs both selectors. */
.svg-sep::part(separator),
.svg-sep md-breadcrumb-item::part(separator) {
color: transparent;
inline-size: 16px;
background: center / 12px no-repeat
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23888'><path d='M9 6l6 6-6 6z'/></svg>");
}
</style>
<MdBreadcrumbs className="svg-sep" label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library/data">Data</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<style>
/* md-breadcrumbs exposes a separator part too (the one before the …
toggle), so a full restyle needs both selectors. */
.svg-sep::part(separator),
.svg-sep md-breadcrumb-item::part(separator) {
color: transparent;
inline-size: 16px;
background: center / 12px no-repeat
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23888'><path d='M9 6l6 6-6 6z'/></svg>");
}
</style>
<md-breadcrumbs class="svg-sep" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<style>
/* md-breadcrumbs exposes a separator part too (the one before the …
toggle), so a full restyle needs both selectors. */
.svg-sep::part(separator),
.svg-sep md-breadcrumb-item::part(separator) {
color: transparent;
inline-size: 16px;
background: center / 12px no-repeat
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23888'><path d='M9 6l6 6-6 6z'/></svg>");
}
</style>
<md-breadcrumbs class="svg-sep" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<style>
/* md-breadcrumbs exposes a separator part too (the one before the …
toggle), so a full restyle needs both selectors. */
.svg-sep::part(separator),
.svg-sep md-breadcrumb-item::part(separator) {
color: transparent;
inline-size: 16px;
background: center / 12px no-repeat
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23888'><path d='M9 6l6 6-6 6z'/></svg>");
}
</style>
<md-breadcrumbs class="svg-sep" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item href="/library/data">Data</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>Separators are decorative and are marked aria-hidden — they are never
announced, so replacing the glyph never changes what a screen reader says.
| Event | On | Cancelable | Detail | Fires |
|---|---|---|---|---|
mdSelect | md-breadcrumb-item | yes | MdBreadcrumbSelectDetail | A linked crumb is activated — click, or Enter on the focused anchor |
mdExpand | md-breadcrumbs | no | MdBreadcrumbsExpandDetail | The overflow toggle is activated, or expand() / collapse() changes the state |
mdSelect is emitted by the child, but it bubbles and is composed — attach
one delegated listener on the md-breadcrumbs element. Only the anchor emits
it, so current and disabled crumbs stay silent. Being cancelable is the
hook for SPA routing: keep real hrefs so right-click, middle-click and “copy
link” still work, then intercept.
| You want to… | Listen to |
|---|---|
| Route in an SPA instead of a full page load | mdSelect + preventDefault() |
| Log which ancestor the user jumped to | mdSelect — detail.href |
| Know the trail folded or unfolded | mdExpand — detail.expanded |
| Re-measure layout after the trail changes width | mdExpand — detail.itemCount |
interface MdBreadcrumbsExpandDetail { expanded: boolean; // the state the trail has JUST taken itemCount: number;}
interface MdBreadcrumbSelectDetail { href: string; label: string; current: boolean; itemIndex: number; // 0-indexed position in the trail itemTotal: number; originalEvent: MouseEvent | KeyboardEvent;}Activate the ”…” toggle to see mdExpand, then click a crumb to see mdSelect.
Navigation is vetoed in this demo so the page stays put — ⌘/Ctrl-click still
opens a new tab, because the listener bails out before preventDefault().
<!-- 5 crumbs against max-items="4" — the trail folds, so the … toggle
(and therefore mdExpand) is actually reachable. -->
<md-breadcrumbs id="trail" label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>
<script type="module">
const trail = document.getElementById('trail');
// mdSelect is emitted by the crumb but bubbles, so one listener on the
// trail covers all of them.
trail.addEventListener('mdSelect', (e) => {
const { href, label, itemIndex, itemTotal } = e.detail;
console.log(label, href, itemIndex + 1, 'of', itemTotal);
});
trail.addEventListener('mdExpand', (e) => {
console.log(e.detail.expanded, e.detail.itemCount);
});
</script>import { MdBreadcrumbs, MdBreadcrumbItem } from '@awc-ui/react';
export function Trail() {
// mdSelect is declared on the ITEM wrapper, mdExpand on the trail wrapper.
const onSelect = (e: CustomEvent) => {
const { href, label, itemIndex, itemTotal } = e.detail;
console.log(label, href, itemIndex + 1, 'of', itemTotal);
};
return (
// 5 crumbs against maxItems={4} — the trail folds, so onMdExpand fires.
<MdBreadcrumbs
label="Breadcrumb"
maxItems={4}
onMdExpand={(e) => console.log(e.detail.expanded, e.detail.itemCount)}
>
<MdBreadcrumbItem href="/" icon="home" onMdSelect={onSelect}>Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a" onMdSelect={onSelect}>Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b" onMdSelect={onSelect}>Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c" onMdSelect={onSelect}>Services</MdBreadcrumbItem>
<MdBreadcrumbItem current>Invoices</MdBreadcrumbItem>
</MdBreadcrumbs>
);
}import { Component } from '@angular/core';
@Component({
selector: 'app-trail',
// 5 crumbs against max-items="4" — the trail folds, so mdExpand fires.
template: `
<md-breadcrumbs
label="Breadcrumb"
max-items="4"
(mdSelect)="onSelect($any($event))"
(mdExpand)="onExpand($any($event))"
>
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>
`,
})
export class TrailComponent {
onSelect(e: CustomEvent) {
const { href, label, itemIndex, itemTotal } = e.detail;
console.log(label, href, itemIndex + 1, 'of', itemTotal);
}
onExpand(e: CustomEvent) {
console.log(e.detail.expanded, e.detail.itemCount);
}
}<script setup lang="ts">
function onSelect(e: CustomEvent) {
const { href, label, itemIndex, itemTotal } = e.detail;
console.log(label, href, itemIndex + 1, 'of', itemTotal);
}
function onExpand(e: CustomEvent) {
console.log(e.detail.expanded, e.detail.itemCount);
}
</script>
<template>
<!-- 5 crumbs against max-items="4" — the trail folds, so mdExpand fires. -->
<md-breadcrumbs
label="Breadcrumb"
max-items="4"
@mdSelect="onSelect"
@mdExpand="onExpand"
>
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>
</template><script lang="ts">
function onSelect(e: CustomEvent) {
const { href, label, itemIndex, itemTotal } = e.detail;
console.log(label, href, itemIndex + 1, 'of', itemTotal);
}
function onExpand(e: CustomEvent) {
console.log(e.detail.expanded, e.detail.itemCount);
}
</script>
<!-- 5 crumbs against max-items="4" — the trail folds, so mdExpand fires. -->
<md-breadcrumbs
label="Breadcrumb"
max-items="4"
on:mdSelect={onSelect}
on:mdExpand={onExpand}
>
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Invoices</md-breadcrumb-item>
</md-breadcrumbs>Reading the event is one thing; taking over navigation is another. Keep the real
href so the browser affordances survive, then cancel mdSelect and hand the
URL to your router:
<md-breadcrumbs id="trail" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<script type="module">
const trail = document.getElementById('trail');
trail.addEventListener('mdSelect', (e) => {
const { href, originalEvent } = e.detail;
if (originalEvent.metaKey || originalEvent.ctrlKey) return; // let new-tab work
e.preventDefault();
router.push(href);
});
</script>import { MdBreadcrumbs, MdBreadcrumbItem } from '@awc-ui/react';
import { useNavigate } from 'react-router-dom';
export function Trail() {
const navigate = useNavigate();
// The React wrapper declares onMdSelect on MdBreadcrumbItem (the emitter),
// and onMdExpand on MdBreadcrumbs — bind each on its own element.
const onSelect = (e: CustomEvent) => {
const { href, originalEvent } = e.detail;
if (originalEvent.metaKey || originalEvent.ctrlKey) return;
e.preventDefault();
navigate(href);
};
return (
<MdBreadcrumbs label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home" onMdSelect={onSelect}>Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library" onMdSelect={onSelect}>Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
);
}import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-trail',
template: `
<md-breadcrumbs label="Breadcrumb" (mdSelect)="onSelect($event)">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
`,
})
export class TrailComponent {
constructor(private router: Router) {}
onSelect(e: CustomEvent) {
const { href, originalEvent } = e.detail;
if (originalEvent.metaKey || originalEvent.ctrlKey) return;
e.preventDefault();
this.router.navigateByUrl(href);
}
}<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();
function onSelect(e: CustomEvent) {
const { href, originalEvent } = e.detail;
if (originalEvent.metaKey || originalEvent.ctrlKey) return;
e.preventDefault();
router.push(href);
}
</script>
<template>
<md-breadcrumbs label="Breadcrumb" @mdSelect="onSelect">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</template><script lang="ts">
import { goto } from '$app/navigation';
function onSelect(e: CustomEvent) {
const { href, originalEvent } = e.detail;
if (originalEvent.metaKey || originalEvent.ctrlKey) return;
e.preventDefault();
goto(href);
}
</script>
<md-breadcrumbs label="Breadcrumb" on:mdSelect={onSelect}>
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>| Property | Attribute | Type | Default | Reflects |
|---|---|---|---|---|
label | label | string | 'Breadcrumb' | — |
expandLabel | expand-label | string | 'Show full breadcrumb trail' | — |
separator | separator | string | '/' | — |
maxItems | max-items | number | 0 | — |
itemsBeforeCollapse | items-before-collapse | number | 1 | — |
itemsAfterCollapse | items-after-collapse | number | 2 | — |
density | density | 0 | -1 | -2 | -3 | -4 | 0 | Yes |
| Method | Parameters |
|---|---|
expand() | none |
collapse() | none |
| Slot | Description |
|---|---|
(default) | — |
Override on the host element for per-instance theming:
| Property | Description |
|---|---|
--md-breadcrumbs-gap | Gap between items / separators |
--md-breadcrumbs-separator-color | Separator glyph colour |
--md-breadcrumbs-text-color | Item label colour (resting) |
--md-breadcrumbs-stagger | Per-item entrance delay |
Style internal elements through shadow DOM with ::part():
| Part | Description |
|---|---|
list | The <ol> element. |
overflow | The "…" collapse list item. |
overflow-button | The button inside the overflow item. |
A trail is built from one sub-component. It is documented here rather than
on its own page: it means nothing outside md-breadcrumbs, and the parent
writes several of its attributes for you.
md-breadcrumb-itemOne crumb in the trail — a link to an ancestor, or the non-interactive current page.
collapsed, item-index and item-total are parent-managed.
md-breadcrumbs writes them on every render to drive the collapse window and
each crumb’s leading separator. Setting them yourself breaks the collapse
logic.current and href don’t go together. current renders the crumb as
static text (the static part) instead of an anchor — the correct treatment
for the page you are on, which should not link to itself. The parent
auto-promotes the last child to current unless you explicitly marked
another one.separator prop and renders it before itself when
item-index > 0. The item’s separator part exists for styling reach, not
for you to supply a separator.href the crumb is a real anchor, so middle-click, right-click and
“copy link address” work. mdSelect fires on activation — including Enter
on the focused anchor, which the browser synthesises as a click.disabled renders the crumb without an anchor and out of the tab order: the
level stays announced but is not navigable.| Property | Attribute | Type | Default | Reflects |
|---|---|---|---|---|
href | href | string | '' | — |
target | target | string | '' | — |
rel | rel | string | '' | — |
current | current | boolean | false | Yes |
icon | icon | string | '' | — |
disabled | disabled | boolean | false | Yes |
collapsed | collapsed | boolean | false | Yes |
itemIndex | item-index | number | 0 | — |
itemTotal | item-total | number | 0 | — |
density | density | 0 | -1 | -2 | -3 | -4 | 0 | Yes |
| Slot | Description |
|---|---|
(default) | — |
icon | — |
Override on the host element for per-instance theming:
| Property | Description |
|---|---|
--md-breadcrumb-item-link-color | Link text colour |
--md-breadcrumb-item-current-color | Current-page text colour |
--md-breadcrumb-item-current-bg | Current-page pill background |
--md-breadcrumb-item-disabled-color | Disabled text colour |
--md-breadcrumb-item-hover-color | Hover-state text colour |
--md-breadcrumb-item-state-layer-color | Hover/focus/press overlay colour |
--md-breadcrumb-item-gap | Gap between icon + label |
--md-breadcrumb-item-padding | Interactive padding |
Style internal elements through shadow DOM with ::part():
| Part | Description |
|---|---|
separator | Glyph rendered before this item (when not first). |
icon | Leading icon container. |
label | Label text wrapper. |
static | The span (when current or no href). |
link | The anchor (when an href is set and not current). |
state-layer | Hover/focus/press overlay. |
role="navigation" named by label
(default "Breadcrumb"). Translate it.expand-label (default
"Show full breadcrumb trail"), and it carries aria-expanded. Translate it
too — the English defaults are placeholders, not a design decision.current, which exposes “you are here”
instead of yet another link.aria-hidden; they are never part of the
accessible name.| Key | Action |
|---|---|
Tab | Each visible linked crumb, then the overflow toggle. current, disabled and collapsed crumbs are skipped |
Enter | Activates the focused crumb — the browser synthesises a click, so mdSelect fires |
Enter / Space | On the overflow toggle, expands the trail and fires mdExpand |
Tab through the trail below. It is collapsed (max-items="4" against six
crumbs, with items-after-collapse="3" keeping the tail visible), so Docs and
Components are display:none until you expand — a collapsed crumb is not in
the tab order at all, because it is not rendered. Of what remains, focus lands
on Home, then Breadcrumbs, then the ”…” toggle (the toggle is last in the
DOM even though CSS order paints it in the middle), and never on Navigation
(disabled) or Accessibility (current). Those two are still announced; they
simply are not link targets. Activate the ”…” first if you want to Tab the whole
path.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Documentation breadcrumb" expand-label="Show full breadcrumb trail" max-items="4" items-after-collapse="3">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/docs">Docs</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components">Components</md-breadcrumb-item>
<md-breadcrumb-item disabled>Navigation</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components/breadcrumbs">Breadcrumbs</md-breadcrumb-item>
<md-breadcrumb-item current>Accessibility</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs label="Documentation breadcrumb" expandLabel="Show full breadcrumb trail" maxItems="4" itemsAfterCollapse="3">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/docs">Docs</MdBreadcrumbItem>
<MdBreadcrumbItem href="/docs/components">Components</MdBreadcrumbItem>
<MdBreadcrumbItem disabled>Navigation</MdBreadcrumbItem>
<MdBreadcrumbItem href="/docs/components/breadcrumbs">Breadcrumbs</MdBreadcrumbItem>
<MdBreadcrumbItem current>Accessibility</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs label="Documentation breadcrumb" expand-label="Show full breadcrumb trail" max-items="4" items-after-collapse="3">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/docs">Docs</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components">Components</md-breadcrumb-item>
<md-breadcrumb-item disabled>Navigation</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components/breadcrumbs">Breadcrumbs</md-breadcrumb-item>
<md-breadcrumb-item current>Accessibility</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs label="Documentation breadcrumb" expand-label="Show full breadcrumb trail" max-items="4" items-after-collapse="3">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/docs">Docs</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components">Components</md-breadcrumb-item>
<md-breadcrumb-item disabled>Navigation</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components/breadcrumbs">Breadcrumbs</md-breadcrumb-item>
<md-breadcrumb-item current>Accessibility</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Documentation breadcrumb" expand-label="Show full breadcrumb trail" max-items="4" items-after-collapse="3">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/docs">Docs</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components">Components</md-breadcrumb-item>
<md-breadcrumb-item disabled>Navigation</md-breadcrumb-item>
<md-breadcrumb-item href="/docs/components/breadcrumbs">Breadcrumbs</md-breadcrumb-item>
<md-breadcrumb-item current>Accessibility</md-breadcrumb-item>
</md-breadcrumbs>RTL — the trail direction mirrors under dir="rtl"; every box metric is a
logical property. See RTL.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '20px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '2.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>ltr</span>
<div dir="ltr">
<MdBreadcrumbs label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
<span style={{ inlineSize: '2.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>rtl</span>
<div dir="rtl">
<MdBreadcrumbs label="مسار التنقل">
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">المكتبة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الجداول</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-breadcrumbs label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div>separator is a glyph, not a direction/ and • point nowhere, so RTL needs nothing from you. ›, → and » all
point right — under dir="rtl" they aim back the way the trail came. Swap
the prop with the direction (› → ‹, → → ←), or pick a neutral glyph.
Both rows below are dir="rtl"; only the second one had its glyph swapped.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div dir="rtl" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">wrong</span>
<md-breadcrumbs label="مسار التنقل" separator="›">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">right</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div dir="rtl" style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '14px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '3.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace', direction: 'ltr' }}>wrong</span>
<MdBreadcrumbs label="مسار التنقل" separator="›">
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">المكتبة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الجداول</MdBreadcrumbItem>
</MdBreadcrumbs>
<span style={{ inlineSize: '3.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace', direction: 'ltr' }}>right</span>
<MdBreadcrumbs label="مسار التنقل" separator="‹">
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">المكتبة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الجداول</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div dir="rtl" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">wrong</span>
<md-breadcrumbs label="مسار التنقل" separator="›">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">right</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div dir="rtl" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">wrong</span>
<md-breadcrumbs label="مسار التنقل" separator="›">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">right</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div dir="rtl" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">wrong</span>
<md-breadcrumbs label="مسار التنقل" separator="›">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:3.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">right</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>density="-1…-4" is a local override of the inherited data-density. Set it on
the trail and it cascades to every crumb, tightening the inter-crumb gap, the
icon-to-label gap and the crumb padding together. There is no 0 rung to
write — omitting the prop is the default, and writing density="0" maps
nothing at all.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">none</span>
<md-breadcrumbs label="Default density"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-breadcrumbs density="-1" label="Density -1"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-breadcrumbs density="-2" label="Density -2"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-breadcrumbs density="-3" label="Density -3"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-breadcrumbs density="-4" label="Density -4"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '14px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>none</span>
<MdBreadcrumbs label="Default density"><MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-1</span>
<MdBreadcrumbs density="-1" label="Density -1"><MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-2</span>
<MdBreadcrumbs density="-2" label="Density -2"><MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-3</span>
<MdBreadcrumbs density="-3" label="Density -3"><MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-4</span>
<MdBreadcrumbs density="-4" label="Density -4"><MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem><MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem><MdBreadcrumbItem current>Tables</MdBreadcrumbItem></MdBreadcrumbs>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">none</span>
<md-breadcrumbs label="Default density"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-breadcrumbs density="-1" label="Density -1"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-breadcrumbs density="-2" label="Density -2"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-breadcrumbs density="-3" label="Density -3"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-breadcrumbs density="-4" label="Density -4"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">none</span>
<md-breadcrumbs label="Default density"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-breadcrumbs density="-1" label="Density -1"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-breadcrumbs density="-2" label="Density -2"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-breadcrumbs density="-3" label="Density -3"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-breadcrumbs density="-4" label="Density -4"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">none</span>
<md-breadcrumbs label="Default density"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-breadcrumbs density="-1" label="Density -1"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-breadcrumbs density="-2" label="Density -2"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-breadcrumbs density="-3" label="Density -3"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-breadcrumbs density="-4" label="Density -4"><md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item><md-breadcrumb-item href="/library">Library</md-breadcrumb-item><md-breadcrumb-item current>Tables</md-breadcrumb-item></md-breadcrumbs>
</div>The two are independent signals: dir comes from the document tree, density
from the nearest data-density ancestor — and a local density="-1…-4" on a
trail overrides the inherited rung without touching direction. All three trails
below sit in one dir="rtl" data-density="-2" wrapper: the first takes the
inherited -2, the second drops to -4 with the prop, and the third resets to
the default rung the only way that works — setting --md-sys-density-scale: 0
on the element itself. A density="0" prop would have changed nothing.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div dir="rtl" data-density="-2" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-2 inherited</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-4 local</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" density="-4">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">0 via var</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" style="--md-sys-density-scale:0;">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div dir="rtl" data-density="-2" style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '14px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '5.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace', direction: 'ltr' }}>-2 inherited</span>
<MdBreadcrumbs label="مسار التنقل" separator="‹">
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">المكتبة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الجداول</MdBreadcrumbItem>
</MdBreadcrumbs>
<span style={{ inlineSize: '5.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace', direction: 'ltr' }}>-4 local</span>
<MdBreadcrumbs label="مسار التنقل" separator="‹" density="-4">
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">المكتبة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الجداول</MdBreadcrumbItem>
</MdBreadcrumbs>
<span style={{ inlineSize: '5.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace', direction: 'ltr' }}>0 via var</span>
<MdBreadcrumbs label="مسار التنقل" separator="‹" style={{ '--md-sys-density-scale': '0' }}>
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">المكتبة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الجداول</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div dir="rtl" data-density="-2" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-2 inherited</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-4 local</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" density="-4">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">0 via var</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" style="--md-sys-density-scale:0;">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div dir="rtl" data-density="-2" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-2 inherited</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-4 local</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" density="-4">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">0 via var</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" style="--md-sys-density-scale:0;">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div dir="rtl" data-density="-2" style="display:grid;grid-template-columns:auto 1fr;gap:14px 16px;align-items:center;">
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-2 inherited</span>
<md-breadcrumbs label="مسار التنقل" separator="‹">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">-4 local</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" density="-4">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:5.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;direction:ltr;">0 via var</span>
<md-breadcrumbs label="مسار التنقل" separator="‹" style="--md-sys-density-scale:0;">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/library">المكتبة</md-breadcrumb-item>
<md-breadcrumb-item current>الجداول</md-breadcrumb-item>
</md-breadcrumbs>
</div>Density — density="-1…-4" on the trail cascades to every crumb; the
inter-crumb gap, the icon-to-label gap and the crumb padding all taper together.
See Density.
i18n — translate label, expand-label and every crumb’s text; the English
defaults ("Breadcrumb", "Show full breadcrumb trail") are placeholders, not
a design decision. Long translated crumbs are exactly when max-items earns its
keep.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-breadcrumbs label="Navigationspfad" expand-label="Vollständigen Navigationspfad anzeigen" max-items="3">
<md-breadcrumb-item href="/" icon="home">Startseite</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Verwaltungsübersicht</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Rechnungsstellung</md-breadcrumb-item>
<md-breadcrumb-item current>Belege</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل" expand-label="عرض مسار التنقل الكامل" separator="‹" max-items="3">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/a">لوحة الإدارة</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">الفوترة</md-breadcrumb-item>
<md-breadcrumb-item current>الإيصالات</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '20px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>de</span>
<MdBreadcrumbs label="Navigationspfad" expandLabel="Vollständigen Navigationspfad anzeigen" maxItems="3">
<MdBreadcrumbItem href="/" icon="home">Startseite</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Verwaltungsübersicht</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Rechnungsstellung</MdBreadcrumbItem>
<MdBreadcrumbItem current>Belege</MdBreadcrumbItem>
</MdBreadcrumbs>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>ar</span>
<div dir="rtl">
<MdBreadcrumbs label="مسار التنقل" expandLabel="عرض مسار التنقل الكامل" separator="‹" maxItems="3">
<MdBreadcrumbItem href="/" icon="home">الرئيسية</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">لوحة الإدارة</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">الفوترة</MdBreadcrumbItem>
<MdBreadcrumbItem current>الإيصالات</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-breadcrumbs label="Navigationspfad" expand-label="Vollständigen Navigationspfad anzeigen" max-items="3">
<md-breadcrumb-item href="/" icon="home">Startseite</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Verwaltungsübersicht</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Rechnungsstellung</md-breadcrumb-item>
<md-breadcrumb-item current>Belege</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل" expand-label="عرض مسار التنقل الكامل" separator="‹" max-items="3">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/a">لوحة الإدارة</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">الفوترة</md-breadcrumb-item>
<md-breadcrumb-item current>الإيصالات</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-breadcrumbs label="Navigationspfad" expand-label="Vollständigen Navigationspfad anzeigen" max-items="3">
<md-breadcrumb-item href="/" icon="home">Startseite</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Verwaltungsübersicht</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Rechnungsstellung</md-breadcrumb-item>
<md-breadcrumb-item current>Belege</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل" expand-label="عرض مسار التنقل الكامل" separator="‹" max-items="3">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/a">لوحة الإدارة</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">الفوترة</md-breadcrumb-item>
<md-breadcrumb-item current>الإيصالات</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-breadcrumbs label="Navigationspfad" expand-label="Vollständigen Navigationspfad anzeigen" max-items="3">
<md-breadcrumb-item href="/" icon="home">Startseite</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Verwaltungsübersicht</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Rechnungsstellung</md-breadcrumb-item>
<md-breadcrumb-item current>Belege</md-breadcrumb-item>
</md-breadcrumbs>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-breadcrumbs label="مسار التنقل" expand-label="عرض مسار التنقل الكامل" separator="‹" max-items="3">
<md-breadcrumb-item href="/" icon="home">الرئيسية</md-breadcrumb-item>
<md-breadcrumb-item href="/a">لوحة الإدارة</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">الفوترة</md-breadcrumb-item>
<md-breadcrumb-item current>الإيصالات</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</div>Two layers: the trail owns spacing and the separator, each crumb owns its own colours. Set the crumb properties on the parent and they cascade.
md-breadcrumbs| Custom property | Purpose | Default |
|---|---|---|
--md-breadcrumbs-gap | Space between crumbs and separators | 8px, density-derived |
--md-breadcrumbs-separator-color | Separator glyph colour | on-surface-variant |
--md-breadcrumbs-text-color | Trail text colour at rest | on-surface-variant |
--md-breadcrumbs-stagger | Per-crumb delay of the expand animation | 40ms |
md-breadcrumb-item| Custom property | Purpose | Default |
|---|---|---|
--md-breadcrumb-item-link-color | Link text | on-surface-variant |
--md-breadcrumb-item-hover-color | Hover text | primary |
--md-breadcrumb-item-current-color | Current-page text | on-secondary-container |
--md-breadcrumb-item-current-bg | Current-page pill | secondary-container |
--md-breadcrumb-item-disabled-color | Disabled text | 61% on-surface |
--md-breadcrumb-item-state-layer-color | Hover / focus / press overlay | on-surface |
--md-breadcrumb-item-gap | Icon-to-label gap | 6px, density-derived |
--md-breadcrumb-item-padding | Crumb padding | Density-derived |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Branded" separator="›"
style="--md-breadcrumbs-gap: 14px; --md-breadcrumbs-separator-color: #7c4dff; --md-breadcrumb-item-link-color: #7c4dff; --md-breadcrumb-item-hover-color: #4527a0; --md-breadcrumb-item-current-bg: #ede7f6; --md-breadcrumb-item-current-color: #311b92;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Tonal roles"
style="--md-breadcrumb-item-link-color: var(--md-sys-color-tertiary); --md-breadcrumb-item-hover-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumb-item-current-bg: var(--md-sys-color-tertiary-container); --md-breadcrumb-item-current-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumbs-separator-color: var(--md-sys-color-outline);">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Roomy" separator="→"
style="--md-breadcrumbs-gap: 20px; --md-breadcrumb-item-padding: 10px 18px; --md-breadcrumb-item-gap: 12px;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '20px', inlineSize: '100%' }}>
<MdBreadcrumbs label="Branded" separator="›"
style={{ '--md-breadcrumbs-gap': '14px', '--md-breadcrumbs-separator-color': '#7c4dff', '--md-breadcrumb-item-link-color': '#7c4dff', '--md-breadcrumb-item-hover-color': '#4527a0', '--md-breadcrumb-item-current-bg': '#ede7f6', '--md-breadcrumb-item-current-color': '#311b92' }}>
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
<MdBreadcrumbs label="Tonal roles"
style={{ '--md-breadcrumb-item-link-color': 'var(--md-sys-color-tertiary)', '--md-breadcrumb-item-hover-color': 'var(--md-sys-color-on-tertiary-container)', '--md-breadcrumb-item-current-bg': 'var(--md-sys-color-tertiary-container)', '--md-breadcrumb-item-current-color': 'var(--md-sys-color-on-tertiary-container)', '--md-breadcrumbs-separator-color': 'var(--md-sys-color-outline)' }}>
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current>Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
<MdBreadcrumbs label="Roomy" separator="→"
style={{ '--md-breadcrumbs-gap': '20px', '--md-breadcrumb-item-padding': '10px 18px', '--md-breadcrumb-item-gap': '12px' }}>
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library" icon="folder">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current icon="table">Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Branded" separator="›"
style="--md-breadcrumbs-gap: 14px; --md-breadcrumbs-separator-color: #7c4dff; --md-breadcrumb-item-link-color: #7c4dff; --md-breadcrumb-item-hover-color: #4527a0; --md-breadcrumb-item-current-bg: #ede7f6; --md-breadcrumb-item-current-color: #311b92;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Tonal roles"
style="--md-breadcrumb-item-link-color: var(--md-sys-color-tertiary); --md-breadcrumb-item-hover-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumb-item-current-bg: var(--md-sys-color-tertiary-container); --md-breadcrumb-item-current-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumbs-separator-color: var(--md-sys-color-outline);">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Roomy" separator="→"
style="--md-breadcrumbs-gap: 20px; --md-breadcrumb-item-padding: 10px 18px; --md-breadcrumb-item-gap: 12px;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Branded" separator="›"
style="--md-breadcrumbs-gap: 14px; --md-breadcrumbs-separator-color: #7c4dff; --md-breadcrumb-item-link-color: #7c4dff; --md-breadcrumb-item-hover-color: #4527a0; --md-breadcrumb-item-current-bg: #ede7f6; --md-breadcrumb-item-current-color: #311b92;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Tonal roles"
style="--md-breadcrumb-item-link-color: var(--md-sys-color-tertiary); --md-breadcrumb-item-hover-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumb-item-current-bg: var(--md-sys-color-tertiary-container); --md-breadcrumb-item-current-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumbs-separator-color: var(--md-sys-color-outline);">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Roomy" separator="→"
style="--md-breadcrumbs-gap: 20px; --md-breadcrumb-item-padding: 10px 18px; --md-breadcrumb-item-gap: 12px;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:20px;inline-size:100%;">
<md-breadcrumbs label="Branded" separator="›"
style="--md-breadcrumbs-gap: 14px; --md-breadcrumbs-separator-color: #7c4dff; --md-breadcrumb-item-link-color: #7c4dff; --md-breadcrumb-item-hover-color: #4527a0; --md-breadcrumb-item-current-bg: #ede7f6; --md-breadcrumb-item-current-color: #311b92;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Tonal roles"
style="--md-breadcrumb-item-link-color: var(--md-sys-color-tertiary); --md-breadcrumb-item-hover-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumb-item-current-bg: var(--md-sys-color-tertiary-container); --md-breadcrumb-item-current-color: var(--md-sys-color-on-tertiary-container); --md-breadcrumbs-separator-color: var(--md-sys-color-outline);">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library">Library</md-breadcrumb-item>
<md-breadcrumb-item current>Tables</md-breadcrumb-item>
</md-breadcrumbs>
<md-breadcrumbs label="Roomy" separator="→"
style="--md-breadcrumbs-gap: 20px; --md-breadcrumb-item-padding: 10px 18px; --md-breadcrumb-item-gap: 12px;">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
</div>Every default resolves through an md-sys-color role, so a trail that sets no
custom properties follows the theme on its own. Switch this page between light
and dark — the trail below is untouched markup:
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdBreadcrumbs label="Breadcrumb" maxItems="4">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c">Services</MdBreadcrumbItem>
<MdBreadcrumbItem current>Billing</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-breadcrumbs label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-breadcrumbs label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-breadcrumbs label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>Custom properties cover colour and spacing. Parts reach into the shadow root for everything else — and the two components expose separate sets.
| Part | On | Element |
|---|---|---|
list | md-breadcrumbs | The <ol> |
overflow | md-breadcrumbs | The ”…” list item |
overflow-button | md-breadcrumbs | The button inside it |
separator | md-breadcrumbs | The glyph the trail draws before the ”…” toggle (also tagged separator--2) |
separator | md-breadcrumb-item | The glyph before this crumb (absent on the first) |
link | md-breadcrumb-item | The anchor — only with an href and not current |
static | md-breadcrumb-item | The span — when current, disabled, or no href |
state-layer | md-breadcrumb-item | Hover / focus / press overlay |
icon | md-breadcrumb-item | Leading icon container |
label | md-breadcrumb-item | Label text wrapper |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<style>
.parts-trail::part(list) { padding-block: 6px; }
.parts-trail::part(overflow-button) {
border-radius: 4px;
outline: 1px solid var(--md-sys-color-primary);
}
.parts-trail md-breadcrumb-item::part(label) { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; }
/* Both selectors: the crumbs draw their own separators, the trail draws the
one in front of the … toggle. */
.parts-trail::part(separator),
.parts-trail md-breadcrumb-item::part(separator) { opacity: .45; }
</style>
<md-breadcrumbs class="parts-trail" label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<style>
.parts-trail::part(list) { padding-block: 6px; }
.parts-trail::part(overflow-button) {
border-radius: 4px;
outline: 1px solid var(--md-sys-color-primary);
}
.parts-trail md-breadcrumb-item::part(label) { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; }
/* Both selectors: the crumbs draw their own separators, the trail draws the
one in front of the … toggle. */
.parts-trail::part(separator),
.parts-trail md-breadcrumb-item::part(separator) { opacity: .45; }
</style>
<MdBreadcrumbs className="parts-trail" label="Breadcrumb" maxItems="4">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a">Projects</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b">Q3 Migration</MdBreadcrumbItem>
<MdBreadcrumbItem href="/a/b/c">Services</MdBreadcrumbItem>
<MdBreadcrumbItem current>Billing</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<style>
.parts-trail::part(list) { padding-block: 6px; }
.parts-trail::part(overflow-button) {
border-radius: 4px;
outline: 1px solid var(--md-sys-color-primary);
}
.parts-trail md-breadcrumb-item::part(label) { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; }
/* Both selectors: the crumbs draw their own separators, the trail draws the
one in front of the … toggle. */
.parts-trail::part(separator),
.parts-trail md-breadcrumb-item::part(separator) { opacity: .45; }
</style>
<md-breadcrumbs class="parts-trail" label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<style>
.parts-trail::part(list) { padding-block: 6px; }
.parts-trail::part(overflow-button) {
border-radius: 4px;
outline: 1px solid var(--md-sys-color-primary);
}
.parts-trail md-breadcrumb-item::part(label) { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; }
/* Both selectors: the crumbs draw their own separators, the trail draws the
one in front of the … toggle. */
.parts-trail::part(separator),
.parts-trail md-breadcrumb-item::part(separator) { opacity: .45; }
</style>
<md-breadcrumbs class="parts-trail" label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<style>
.parts-trail::part(list) { padding-block: 6px; }
.parts-trail::part(overflow-button) {
border-radius: 4px;
outline: 1px solid var(--md-sys-color-primary);
}
.parts-trail md-breadcrumb-item::part(label) { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; }
/* Both selectors: the crumbs draw their own separators, the trail draws the
one in front of the … toggle. */
.parts-trail::part(separator),
.parts-trail md-breadcrumb-item::part(separator) { opacity: .45; }
</style>
<md-breadcrumbs class="parts-trail" label="Breadcrumb" max-items="4">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/a">Projects</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b">Q3 Migration</md-breadcrumb-item>
<md-breadcrumb-item href="/a/b/c">Services</md-breadcrumb-item>
<md-breadcrumb-item current>Billing</md-breadcrumb-item>
</md-breadcrumbs><!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<style>
.parts-current md-breadcrumb-item::part(static) {
border: 1px dashed var(--md-sys-color-outline);
border-radius: 999px;
}
/* Underline the LABEL, not the link: ::part(link) is a flex container, so the
browser draws the decoration once per flex item — the 18px glyph box and the
20px text box each get their own, at their own baseline, which reads as two
underlines at different heights. */
.parts-current md-breadcrumb-item:not([current])::part(label) { text-decoration: underline; text-underline-offset: 3px; }
.parts-current md-breadcrumb-item::part(icon) { color: var(--md-sys-color-primary); }
</style>
<md-breadcrumbs class="parts-current" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdBreadcrumbItem, MdBreadcrumbs } from '@awc-ui/react';
export function Demo() {
return (
<>
<style>
.parts-current md-breadcrumb-item::part(static) {
border: 1px dashed var(--md-sys-color-outline);
border-radius: 999px;
}
/* Underline the LABEL, not the link: ::part(link) is a flex container, so the
browser draws the decoration once per flex item — the 18px glyph box and the
20px text box each get their own, at their own baseline, which reads as two
underlines at different heights. */
.parts-current md-breadcrumb-item:not([current])::part(label) { text-decoration: underline; text-underline-offset: 3px; }
.parts-current md-breadcrumb-item::part(icon) { color: var(--md-sys-color-primary); }
</style>
<MdBreadcrumbs className="parts-current" label="Breadcrumb">
<MdBreadcrumbItem href="/" icon="home">Home</MdBreadcrumbItem>
<MdBreadcrumbItem href="/library" icon="folder">Library</MdBreadcrumbItem>
<MdBreadcrumbItem current icon="table">Tables</MdBreadcrumbItem>
</MdBreadcrumbs>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<style>
.parts-current md-breadcrumb-item::part(static) {
border: 1px dashed var(--md-sys-color-outline);
border-radius: 999px;
}
/* Underline the LABEL, not the link: ::part(link) is a flex container, so the
browser draws the decoration once per flex item — the 18px glyph box and the
20px text box each get their own, at their own baseline, which reads as two
underlines at different heights. */
.parts-current md-breadcrumb-item:not([current])::part(label) { text-decoration: underline; text-underline-offset: 3px; }
.parts-current md-breadcrumb-item::part(icon) { color: var(--md-sys-color-primary); }
</style>
<md-breadcrumbs class="parts-current" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<style>
.parts-current md-breadcrumb-item::part(static) {
border: 1px dashed var(--md-sys-color-outline);
border-radius: 999px;
}
/* Underline the LABEL, not the link: ::part(link) is a flex container, so the
browser draws the decoration once per flex item — the 18px glyph box and the
20px text box each get their own, at their own baseline, which reads as two
underlines at different heights. */
.parts-current md-breadcrumb-item:not([current])::part(label) { text-decoration: underline; text-underline-offset: 3px; }
.parts-current md-breadcrumb-item::part(icon) { color: var(--md-sys-color-primary); }
</style>
<md-breadcrumbs class="parts-current" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<style>
.parts-current md-breadcrumb-item::part(static) {
border: 1px dashed var(--md-sys-color-outline);
border-radius: 999px;
}
/* Underline the LABEL, not the link: ::part(link) is a flex container, so the
browser draws the decoration once per flex item — the 18px glyph box and the
20px text box each get their own, at their own baseline, which reads as two
underlines at different heights. */
.parts-current md-breadcrumb-item:not([current])::part(label) { text-decoration: underline; text-underline-offset: 3px; }
.parts-current md-breadcrumb-item::part(icon) { color: var(--md-sys-color-primary); }
</style>
<md-breadcrumbs class="parts-current" label="Breadcrumb">
<md-breadcrumb-item href="/" icon="home">Home</md-breadcrumb-item>
<md-breadcrumb-item href="/library" icon="folder">Library</md-breadcrumb-item>
<md-breadcrumb-item current icon="table">Tables</md-breadcrumb-item>
</md-breadcrumbs>md-breadcrumbs::part(overflow-button) { border-radius: 4px;}md-breadcrumb-item ·
md-app-bar ·
md-tabs ·
md-navigation-rail ·
md-menu
md-breadcrumbsTwo artefacts to give your AI agent so it generates correct UI with this component. The per-component spec answers "how do I use this exact tag?". The main-llm spec answers "which tag should I pick in the first place?".
md-breadcrumbs spec card
Identity · when to use / when NOT · decision cues · behavioural contract · do/don't · anti-patterns · full API. Paste into your agent when you're implementing with this component.
System-prompt preamble · decision matrix · token reference · page recipes · anti-patterns. Paste into the system prompt at the start of a piece of work.