Background
Define and add the Breadcrumb navigation component to Codex.
Description
Series of links that indicate the current page's position within the navigation structure/hierarchy.
User stories
As a user navigating through multiple Wikimedia pages, I want to quickly see where I am within the site's hierarchy, so I can easily navigate back or move to related pages.
History
Describe or link to prior discussions related to this component
Known use cases
| Wikivoyage under the title of a destination | |
| Community Configuration 2.0 (soon) | |
| Wiktionary categories | |
| Growth pages (Mediawiki) | |
Existing implementations
These artifacts are listed for historical context. The figma spec, linked below, is the source of truth for the new component.
Wikimedia community:
- OOUI: add the relevant OOUI widget name(s) here, if applicable. See OOUI demos.
- Vue: add any existing Vue implementations, if applicable. See Projects using Vue.js.
External libraries:
- Add links to any examples from external libraries
- https://vuetifyjs.com/en/components/breadcrumbs/#usage
- https://mui.com/material-ui/react-breadcrumbs/
Codex implementation
At the end of the day, a Breadcrumb component is a way to display a list of links in hierarchical order. The last item should correspond to the current page. The last item does not need to be a link, but all other items must be links.
Our implementation of this component should follow the ARIA Authoring Practices Guide guidelines for "Breadcrumb Pattern".
Component task owners
- Designer: @Sneha / @DTorsani-WMF
- Developer: @egardner / @Dogu
Open questions
- How much customization should we support here?
- The Vuetify Breadcrumb component supports a fair amount of user customization by exposing named slots. We should consider doing something similar here; one Breadcrumb pattern may be appropriate for on-wiki usage, while another style might better suit usage on an external site. We should consider adding slots for the following things:
- First item (aka "home"): Custom display for the first item in the list. Users may want an icon or logo here for example.
- Breadcrumb items: Similar to how components like Select allow for custom styling of MenuItems via a scoped slot, we may want to allow custom styling of each "Breadcrumb Item" in a similar way. All of these items still need to be link elements per the ARIA guidelines, but the contents of the links could be customized
- Last item (aka active item) – This should also be a link but perhaps its markup can be similarly customized via a slot
- Separator – we should provide a default separator element (icon, arrow character, etc) but users may want to override this as well. This item should always have the aria-hidden role so that it is not announced to screen readers.
- The Vuetify Breadcrumb component supports a fair amount of user customization by exposing named slots. We should consider doing something similar here; one Breadcrumb pattern may be appropriate for on-wiki usage, while another style might better suit usage on an external site. We should consider adding slots for the following things:
- What does mobile UX look like – Mobile devices probably won't have room to display a long list of horizontal breadcrumbs, so we may want to hide some of this on phone-sized screens.
- "Breadcrumb groups" – Can breadcrumb elements have dropdowns that contain other elements nested inside? Maybe but this is probably outside the scope of the MVP.
Design spec
Once a component spec sheet has been created in Figma, remove the note stating that the spec is missing and link to the spec below.
Anatomy
Designer should list the structure and properties of the component.
Style
Designer should list the visual features of the component.
Interaction
Designer should list interaction specifications.
Guidelines
Designer should provide the guidelines and associated images for this component. Once the guidelines have been documented, please remove this note and share a link to the guidelines below.
| Doc with the guidelines | Images |
Demos
Designer should describe how the component should be documented in the demos, including configurable and standalone demos.
Acceptance criteria
Minimum viable product
This task covers the minimum viable product (MVP) version of this component. MVP includes basic layout, default states, and most important functionality.
MVP scope
- List all parts of the MVP scope for this component
Design
- Design the Figma exploration file and include its link in this task:
- Make sure the Figma component is designed with all the required states, properties, and variants, including the LTR and RTL versions
- Make sure all colors used in the component follows the minimum required contrast to be accessible
- Provide a thorough explanation of the component's behavior in the spec sheet, including all relevant specifications, maximum examples, and usage recommendations
- Include a list of keyboard shortcuts to navigate the component (keyboard navigation table)
- Document the component's guidelines and provide the link to the doc and its images in this task.
- Publish the main component in the Figma library. This step will be done by a DST member.
Code
- Implement the component in Codex
- Implement the guidelines in the component's page
Future work
- If applicable, list future work that should be done for this component after the MVP is implemented as part of this task. You should open new, standalone tasks for all future work.



