Getting Started

Roadmap

The components we're bringing to the standard, in the order we plan to ship them, and what goes into every page.

Open Components grows one component at a time. We'd love to cover every component you reach for, but a page only helps you if you can trust it, so we write each one in full before we move on to the next. This page shows you where we are, and what's coming next.

Every component gets a page with the same structure as the Button's, so you always know where to look:

  • User Interface (UI) - how it looks, from its anatomy to its tokens
  • User Experience (UX) - how it behaves for every person and every input
  • Developer Experience (DX) - how developers work with it
  • Agentic Experience (AX) - how agents can read and verify it

On top of that, each page comes with a checklist of every rule, a contract your agents can check their work against, and a reference implementation that does its part of every rule, along with the tests that prove it. That's a lot to get right, so a page only ships once all of it is ready. We'd much rather give you one page you can rely on than several you can't.

Components

Here's every component we plan to cover. A tick means its page has shipped, so you can read it today.

We've grouped them by what they build on, so each group can reuse what the ones before it have already settled, like the Button's sizes and colours, or how the Dialog handles focus. The order may still change as we go, and you can help shape it.

Actions and forms

Let's start with the components people use to act and to fill in forms. The Button sets the sizes, colours and states that every other component shares, and the form controls build on them with the labels, hints, validation and controlled values that every form needs.

ComponentWhat it's for
Shipped ButtonActing on what's in front of you, from saving a form to deleting a file
Planned FieldLabelling a form control, with a hint and an error message when it needs them
Shipped InputTyping a single line of text, like a name, an email address or a search
Shipped TextareaWriting longer text, like a comment or a message
Shipped CheckboxSaying yes or no to one thing, like agreeing to the terms
Shipped Checkbox GroupPicking any number of options out of a few
Shipped Radio GroupPicking one option out of a few, when they all fit on the screen
Shipped SwitchFlipping a setting on or off, with an effect you see right away
Planned SelectPicking one option out of many, from a list

Overlays

Next come the components that sit on top of the page. They all need to take focus and give it back, close with Escape or a click outside, and stack in the right order, so we'll settle those rules once and share them.

ComponentWhat it's for
Shipped DialogAsking for someone's full attention, and holding focus until they're done
Shipped PopoverShowing more next to what opened it, without blocking the rest of the page
Shipped TooltipGiving a short hint on hover and focus, like an icon-only button's label
Planned Dropdown MenuTucking a list of actions behind a single button
Planned ToastConfirming something briefly without getting in the way, like "Changes saved"

These help people find their way around a site, or show and hide what's on a page. Most of them build on the Link and the Button, and add the keyboard support people expect, like moving between tabs with the arrow keys.

ComponentWhat it's for
Planned LinkTaking people somewhere else, from inside a sentence or on its own
Planned TabsSwitching between panels of related content, one at a time
Planned AccordionExpanding and collapsing sections, like the questions in an FAQ
Planned BreadcrumbShowing where a page sits in the site, and the way back up
Planned PaginationMoving through a long list of results, a page at a time

Feedback and display

These tell people what's going on, and most of them aren't interactive at all. That's why their rules are mostly about meaning and contrast, and about making sure screen readers hear about what changes.

ComponentWhat it's for
Shipped SpinnerShowing that something is busy, for a wait of unknown length
Planned AlertTelling people something important, from a success to an error, right on the page
Planned BadgeMarking a status or a count, like "New" or "3"
Planned AvatarShowing a person or a team, with a photo, their initials or an icon
Planned ProgressShowing how far along a task is, even when you can't tell how long it'll take
Planned SkeletonHolding the layout while content loads, so nothing jumps around when it arrives
Shipped CardGrouping related content, like a project or a product, in one container

Later

Finally, the composite widgets. They have the most keyboard behaviour of all, and they build on almost everything above, which is why they come last. A combobox, for example, is an input, a popover and a list working together.

ComponentWhat it's for
Planned ComboboxTyping to filter a list of suggestions, like when you pick a country
Planned SliderPicking a value or a range by dragging, or with the arrow keys
Planned Date PickerTyping a date or a range, or picking it from a calendar
Planned TableComparing rows of data, with sorting and selection
Planned Tree ViewBrowsing nested items, like the folders in a file explorer
Planned Command PaletteFinding any action from the keyboard, just by typing its name

Before a page ships

You don't have to wait for a page to hold a component to the standard. The three layers in the Introduction apply to every component, Design Tokens covers how to name its variables, and the Button shows how the layers turn into rules you can check.

Your agents can do the same. Point them at /llms-full.txt, which holds the whole standard in one file, and ask them to follow the Button's structure. For a component that doesn't have its page yet, you could use:

Build a Tabs component for our design system that meets the Open Components standard:
https://opencomponents.dev/llms-full.txt

There's no Tabs page yet, so follow the Button page's structure. Work through the UI,
UX, DX and AX of tabs, following the WAI-ARIA Tabs pattern, then write a checklist with
a stable ID for every rule, like tabs/arrow-keys, and a test for each one.

Suggest a component

Is a component you need missing, or further down the list than you'd like? Open an issue and tell us what you're building with it. Knowing what you need helps us decide what comes next.

Copyright © 2026