Skip to content

shadcn.io is an independent project built on shadcn/ui

Free

Breadcrumb with Select (Standard) for Vue

A breadcrumb with Home, a select that starts on Components, and Breadcrumb as the current page. Picking an option does not navigate.

UI library: Ark UI

The trail reads Home, then a select, then Breadcrumb as the current page. The select lists Documentation, Components, and Themes, and it starts on Components. Choosing one does not change the page.

Use it for sibling sections at the same depth, such as a workspace or a version. Navigate yourself when the value should change the URL. Links that are not a single value fit a Dropdown Menu. In Vue, Ark UI does not route from the select.

Preview

Preview width

Installation

MCP · Pro
Make your AI a shadcn expert
Your agent installs components, builds pages and restyles your app from one prompt, in Claude Code, Cursor or VS Code.
Part of Pro

Anatomy

Breadcrumb anatomy: link, ellipsis, separator, item, page

Usage

<Breadcrumb>
  <BreadcrumbList>
    <BreadcrumbItem>
      <BreadcrumbLink :asChild="true"><a href="/">Home</a></BreadcrumbLink>
    </BreadcrumbItem>
    <BreadcrumbSeparator />
    <BreadcrumbItem>
      <Select :collection="collection" :defaultValue='["components"]'>
        <SelectTrigger aria-label="Section" class="w-auto" size="sm">
          <SelectValue />
        </SelectTrigger>
        <SelectContent>
          <SelectGroup>
            <SelectItem v-for="item in collection.items" :item="item" :key="item.value">
              {{ item.label }}
            </SelectItem>
          </SelectGroup>
        </SelectContent>
      </Select>
    </BreadcrumbItem>
    <BreadcrumbSeparator />
    <BreadcrumbItem><BreadcrumbPage>Breadcrumb</BreadcrumbPage></BreadcrumbItem>
  </BreadcrumbList>
</Breadcrumb>

FAQ

How does the select start on Components?

The options come from createListCollection, passed as collection, and defaultValue is ["components"]: the value is an array.

How does the select fit in the line?

SelectTrigger takes size="sm", and the trigger is only as wide as its value, so it sits in the trail like a crumb.

How is the select named?

It has no visible label, so it carries aria-label="Section" and is announced as the Section select with its value.

Does picking an option change the page?

Not in the demo: the select is uncontrolled and nothing listens. Listen to @value-change and read details.value.

How is the trail announced?

Breadcrumb renders a nav labeled breadcrumb around an ordered list, so screen readers announce a breadcrumb landmark and the number of items. Home and Components are read as links.

How do the links go through my router?

BreadcrumbLink takes as-child, and the demo puts an anchor inside. Put a RouterLink there instead.

API Reference

Breadcrumb

Sets asChild. The rest is on the Breadcrumb page.

Select

Sets collection="collection", defaultValue="[components]", aria-label="Section", size="sm", v-for="item in collection.items" and item="item". The rest is on the Select page.