Skip to main content
BEEQ Breadcrumb component overview
A breadcrumb is a form of contextual navigation displaying a user’s position within a site hierarchy, enabling them to navigate back through the levels, while it should not be misleading as a primary navigation tool.

When to use

Use breadcrumbs when
  • Navigating large content hierarchies with more than two levels
  • Users need compact context for where they are in the navigation hierarchy
  • Users need to move back through parent levels from the current page

Do not use breadcrumbs when
  • They would substitute the primary navigation
  • The product has single-level navigation and breadcrumbs would add unnecessary clutter
  • The user is in a multistep process; use a progress indicator instead

Anatomy

BEEQ Breadcrumb component anatomy
PartElementDescription
Iconbq-icon or decorative iconOptional visual cue before the first breadcrumb item
Dividerseparator slotThe default slash separator or a custom separator element
Inactive breadcrumbbq-breadcrumb-itemA parent navigation step rendered as a link or button
Current pagebq-breadcrumb-item with aria-current="page"The last item indicating the user’s current location
Truncationcustom overflow or hidden itemsCollapses long paths while preserving the first and last items
Dropdowncustom nested menuOptional overflow menu for deep breadcrumb trails

Design guidelines

Placement

Breadcrumbs should appear near the top of the page, above the page title or directly below the page header.

Label and icon

States

All parent breadcrumb items share the same brand primary color. Each interactive state provides a distinct visual cue:
StateVisual treatment
DefaultBrand primary color text, no decoration
HoverReduced opacity to signal interactivity
FocusVisible focus ring around the item
Active:active pressed appearance
Current pageBrand color text, non-interactive; aria-current="page" is set automatically

Sizing and spacing

Breadcrumb items use consistent internal padding and separator spacing controlled by CSS custom properties. You can adjust these tokens when integrating the breadcrumb into a custom page header:
  • --bq-breadcrumb-item--paddingY — vertical padding of each item
  • --bq-breadcrumb-item--padding-start / --bq-breadcrumb-item--padding-end — horizontal padding of each item
  • --bq-breadcrumb-item--padding-start-separator / --bq-breadcrumb-item--padding-end-separator — spacing around the separator

Truncation

Show a maximum of four items in the breadcrumb trail. When the path is deeper, keep the first (root) and last (current page) items visible and collapse the intermediate levels into a dropdown so users can still reach any level.

Usage

The examples below cover the most common ways to use breadcrumbs in BEEQ.

Default

Use a default breadcrumb to show the current page within a hierarchy. When href is not set, each breadcrumb item renders as a button.
Always place bq-breadcrumb-item elements directly inside bq-breadcrumb. Items rendered outside the component will not receive separator or aria-current handling.

Custom separator

Use the separator slot to replace the default / separator.
Use the same separator throughout a breadcrumb trail. Mixing separator styles in a single trail breaks visual consistency.

Options

The following example shows how to combine icons with breadcrumb items.

With icons

Icons next to labels help users recognize categories at a glance. Use size="16" icons and always pair them with a text label or aria-label for screen reader clarity.

Best practices

DoFor breadcrumbs on detail pages, include the page type (Create, Edit, View) followed by the item name.

Don’tAvoid indicating the item number or using dynamically generated names without context.

DoTruncate labels longer than 30 characters with an ellipsis and show the full text in a tooltip on hover.

Don’tDisplay overly long labels that wrap or truncate without a way to view the complete text.

DoShow a maximum of four items in the breadcrumb trail. For longer paths, truncate and show the first and last items.

Don’tDisplay more than four items in a single breadcrumb trail, as it overloads the visual and reduces usability.

DoMake all parent breadcrumb items clickable links, including the current page as the last non-interactive item.

Don’tDisplay the current page as a clickable link; it should be non-interactive text to reflect the user’s current location.

Accessibility

  • Navigation — navigate to each link in the breadcrumb using Tab and activate it with Enter.
  • Landmark label — use the label prop to set an aria-label on the <nav> landmark. The default value is Breadcrumbs; override it when multiple navigation regions exist on the same page.
  • Current page — the last breadcrumb item receives aria-current="page" automatically.
  • Icon-only items — when a breadcrumb item contains only an icon, set aria-label on the bq-breadcrumb-item to describe the destination (e.g. aria-label="Home page").
  • Decorative icons — when an icon appears alongside a visible text label, set aria-hidden="true" on the bq-icon so screen readers do not announce it twice.

API reference

bq-breadcrumb properties

PropertyAttributeDescriptionTypeDefault
labellabelThe aria-label attribute to describe the type of navigationstring'Breadcrumbs'

bq-breadcrumb-item properties

PropertyAttributeDescriptionTypeDefault
hrefhrefIf set, the breadcrumb item will be rendered as an <a> with this href, otherwise, a <button> will be renderedstringundefined
relrelWhere to display the link in the browser context. Relevant only if href is setstring'noreferrer noopener'
targettargetWhere to display the link in the browser context. Relevant only if href is set'_blank' | '_parent' | '_self' | '_top'undefined

Events

Events are emitted by bq-breadcrumb-item.
EventDescriptionType
bqBlurHandler to be called when item loses focusCustomEvent<HTMLBqBreadcrumbItemElement>
bqClickHandler to be called when item is clickedCustomEvent<HTMLBqBreadcrumbItemElement>
bqFocusHandler to be called when item is focusedCustomEvent<HTMLBqBreadcrumbItemElement>

Slots

bq-breadcrumb

SlotDescription
(default)The default slot is used to add bq-breadcrumb-item items to the breadcrumb
separatorThe slot to add a separator between breadcrumb items. Default separator is /

bq-breadcrumb-item

SlotDescription
(default)The default slot is used to add content to the breadcrumb item

CSS parts

bq-breadcrumb

PartDescription
navigationThe nav tag that loads the breadcrumb items
separatorThe container that wraps the separator element

bq-breadcrumb-item

PartDescription
baseThe component wrapper container
contentThe span tag that wraps the content item
itemThe breadcrumb item wrapper (button or a)
separatorThe span tag that wraps the separator element

CSS custom properties

Resources

Interactive playground

Explore all breadcrumb configurations in Storybook

Source code

View the breadcrumb implementation on GitHub