Skip to main content

Overview

Breadcrumbs provides a responsive navigation trail that automatically handles overflow by showing an ellipsis indicator. It uses createBreadcrumbs composable with Group and Overflow contexts to determine which items fit in the available space.

Sub-Components

  • Breadcrumbs.Root: Container that manages breadcrumb state and overflow
  • Breadcrumbs.List: Semantic list wrapper with role=“list”
  • Breadcrumbs.Item: Individual breadcrumb item with self-measurement
  • Breadcrumbs.Link: Navigable breadcrumb link (anchor by default)
  • Breadcrumbs.Page: Current page indicator with aria-current=“page”
  • Breadcrumbs.Divider: Visual separator between items
  • Breadcrumbs.Ellipsis: Indicator shown when items are truncated

Usage

<script setup lang="ts">
import { Breadcrumbs } from '@vuetify/v0'
</script>

<template>
  <Breadcrumbs.Root>
    <Breadcrumbs.List>
      <Breadcrumbs.Item text="Home">
        <Breadcrumbs.Link href="/">Home</Breadcrumbs.Link>
      </Breadcrumbs.Item>

      <Breadcrumbs.Divider />

      <Breadcrumbs.Ellipsis />

      <Breadcrumbs.Item text="Products">
        <Breadcrumbs.Link href="/products">Products</Breadcrumbs.Link>
      </Breadcrumbs.Item>

      <Breadcrumbs.Divider />

      <Breadcrumbs.Item text="Shoes">
        <Breadcrumbs.Page>Shoes</Breadcrumbs.Page>
      </Breadcrumbs.Item>
    </Breadcrumbs.List>
  </Breadcrumbs.Root>
</template>

Props

as
DOMElement | null
default:"'nav'"
The HTML element to render as
namespace
string
default:"'v0:breadcrumbs'"
Namespace for dependency injection
divider
string
default:"'/'"
Default divider character/text
ellipsis
string
default:"'…'"
Default ellipsis character/text
gap
number
default:"8"
Gap between items in pixels
label
string
Accessible label for the navigation landmark

Slot Props

isOverflowing
boolean
Whether items are being truncated
capacity
number
Number of items that fit in available space
total
number
Total number of registered items
depth
number
Current depth of the breadcrumb path
isRoot
boolean
Whether at root level
first
() => void
Navigate to root
prev
() => void
Navigate up one level
select
(id: ID) => void
Navigate to a specific item
attrs
object
Attributes to bind to the root element

Props

as
DOMElement | null
default:"'ol'"
The HTML element to render as

Props

as
DOMElement | null
default:"'li'"
The HTML element to render as
text
string
Text content for the item (used for accessibility)

Slot Props

id
string
Unique identifier
isSelected
boolean
Whether this item is currently visible
attrs
object
Attributes to bind to the item element

Props

as
DOMElement | null
default:"'a'"
The HTML element to render as
href
string
Link URL

Props

as
DOMElement | null
default:"'span'"
The HTML element to render as

Slot Props

attrs
object
Attributes including aria-current=“page”

Props

as
DOMElement | null
default:"'li'"
The HTML element to render as
divider
string
Override the divider character from Root

Slot Props

divider
string
The divider character to display

Props

as
DOMElement | null
default:"'li'"
The HTML element to render as
ellipsis
string
Override the ellipsis character from Root

Slot Props

ellipsis
string
The ellipsis character to display

Examples

<template>
  <Breadcrumbs.Root>
    <Breadcrumbs.List>
      <Breadcrumbs.Item text="Home">
        <Breadcrumbs.Link href="/">Home</Breadcrumbs.Link>
      </Breadcrumbs.Item>

      <Breadcrumbs.Divider />

      <Breadcrumbs.Item text="Products">
        <Breadcrumbs.Page>Products</Breadcrumbs.Page>
      </Breadcrumbs.Item>
    </Breadcrumbs.List>
  </Breadcrumbs.Root>
</template>

Accessibility

  • Root renders as <nav> by default with aria-label="Breadcrumb"
  • List has role="list" for proper semantic structure
  • Page has aria-current="page" to indicate current location
  • Divider and Ellipsis have aria-hidden="true" as they are decorative
<template>
  <Breadcrumbs.Root label="Site navigation">
    <Breadcrumbs.List>
      <!-- items -->
    </Breadcrumbs.List>
  </Breadcrumbs.Root>
</template>

Build docs developers (and LLMs) love