Breadcrumb
Vue navigationHierarchical wayfinding strip that shows a user’s position in a nested page tree. Built from `<BreadcrumbList>` and `<BreadcrumbItem>` primitives so you can drop in custom separators, dropdowns for collapsed parents, and ellipsis for overflow.
Also available for React ->Installation
$ pnpm dlx shadcn-vue@latest add https://uipkge.dev/r/vue/breadcrumb.json$ npx shadcn-vue@latest add https://uipkge.dev/r/vue/breadcrumb.json$ yarn dlx shadcn-vue@latest add https://uipkge.dev/r/vue/breadcrumb.json$ bunx shadcn-vue@latest add https://uipkge.dev/r/vue/breadcrumb.json
Or with the named registry:
npx shadcn-vue@latest add @uipkge/breadcrumb
Examples
Props
| Name | Type / Values | Default | Required |
|---|---|---|---|
class | HTMLAttributes['class'] | — | optional |
Dependencies
Used by
Files (8)
-
app/components/ui/breadcrumb/Breadcrumb.vue 0.3 kB
<script lang="ts" setup> import type { HTMLAttributes } from 'vue' const props = defineProps<{ class?: HTMLAttributes['class'] }>() </script> <template> <nav aria-label="breadcrumb" data-uipkge data-slot="breadcrumb" :class="props.class"> <slot /> </nav> </template> -
app/components/ui/breadcrumb/BreadcrumbEllipsis.vue 0.5 kB
<script lang="ts" setup> import type { HTMLAttributes } from 'vue' import { MoreHorizontal } from 'lucide-vue-next' import { cn } from '@/lib/utils' const props = defineProps<{ class?: HTMLAttributes['class'] }>() </script> <template> <span data-uipkge data-slot="breadcrumb-ellipsis" :class="cn('flex size-11 items-center justify-center', props.class)" > <slot> <MoreHorizontal class="size-4" aria-hidden="true" /> </slot> <span class="sr-only">More</span> </span> </template> -
app/components/ui/breadcrumb/BreadcrumbItem.vue 0.3 kB
<script lang="ts" setup> import type { HTMLAttributes } from 'vue' import { cn } from '@/lib/utils' const props = defineProps<{ class?: HTMLAttributes['class'] }>() </script> <template> <li data-uipkge data-slot="breadcrumb-item" :class="cn('inline-flex items-center gap-1.5', props.class)"> <slot /> </li> </template> -
app/components/ui/breadcrumb/BreadcrumbLink.vue 0.7 kB
<script lang="ts" setup> import type { PrimitiveProps } from 'reka-ui' import type { HTMLAttributes } from 'vue' import { Primitive } from 'reka-ui' import { cn } from '@/lib/utils' const props = withDefaults(defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>(), { as: 'a', }) </script> <template> <Primitive data-uipkge data-slot="breadcrumb-link" :as="as" :as-child="asChild" :class=" cn( 'hover:text-foreground focus-visible:outline-ring rounded-sm underline-offset-4 transition-colors duration-200 hover:underline focus-visible:outline-2 focus-visible:outline-offset-2', props.class, ) " > <slot /> </Primitive> </template> -
app/components/ui/breadcrumb/BreadcrumbList.vue 0.4 kB
<script lang="ts" setup> import type { HTMLAttributes } from 'vue' import { cn } from '@/lib/utils' const props = defineProps<{ class?: HTMLAttributes['class'] }>() </script> <template> <ol data-uipkge data-slot="breadcrumb-list" :class="cn('text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5', props.class)" > <slot /> </ol> </template> -
app/components/ui/breadcrumb/BreadcrumbPage.vue 0.4 kB
<script lang="ts" setup> import type { HTMLAttributes } from 'vue' import { cn } from '@/lib/utils' const props = defineProps<{ class?: HTMLAttributes['class'] }>() </script> <template> <span data-uipkge data-slot="breadcrumb-page" aria-current="page" :class="cn('text-foreground cursor-default font-normal', props.class)" > <slot /> </span> </template> -
app/components/ui/breadcrumb/BreadcrumbSeparator.vue 0.5 kB
<script lang="ts" setup> import type { HTMLAttributes } from 'vue' import { ChevronRight } from 'lucide-vue-next' import { cn } from '@/lib/utils' const props = defineProps<{ class?: HTMLAttributes['class'] }>() </script> <template> <li data-uipkge data-slot="breadcrumb-separator" role="presentation" aria-hidden="true" :class="cn('[&>svg]:size-3.5', props.class)" > <slot> <ChevronRight /> </slot> </li> </template> -
app/components/ui/breadcrumb/index.ts 0.5 kB
export { default as Breadcrumb } from './Breadcrumb.vue' export { default as BreadcrumbEllipsis } from './BreadcrumbEllipsis.vue' export { default as BreadcrumbItem } from './BreadcrumbItem.vue' export { default as BreadcrumbLink } from './BreadcrumbLink.vue' export { default as BreadcrumbList } from './BreadcrumbList.vue' export { default as BreadcrumbPage } from './BreadcrumbPage.vue' export { default as BreadcrumbSeparator } from './BreadcrumbSeparator.vue'
Raw manifest: https://uipkge.dev/r/vue/breadcrumb.json