Roadmap
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.
| Component | What it's for |
|---|---|
| Shipped Button | Acting on what's in front of you, from saving a form to deleting a file |
| Planned Field | Labelling a form control, with a hint and an error message when it needs them |
| Shipped Input | Typing a single line of text, like a name, an email address or a search |
| Shipped Textarea | Writing longer text, like a comment or a message |
| Shipped Checkbox | Saying yes or no to one thing, like agreeing to the terms |
| Shipped Checkbox Group | Picking any number of options out of a few |
| Shipped Radio Group | Picking one option out of a few, when they all fit on the screen |
| Shipped Switch | Flipping a setting on or off, with an effect you see right away |
| Planned Select | Picking 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.
| Component | What it's for |
|---|---|
| Shipped Dialog | Asking for someone's full attention, and holding focus until they're done |
| Shipped Popover | Showing more next to what opened it, without blocking the rest of the page |
| Shipped Tooltip | Giving a short hint on hover and focus, like an icon-only button's label |
| Planned Dropdown Menu | Tucking a list of actions behind a single button |
| Planned Toast | Confirming something briefly without getting in the way, like "Changes saved" |
Navigation and disclosure
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.
| Component | What it's for |
|---|---|
| Planned Link | Taking people somewhere else, from inside a sentence or on its own |
| Planned Tabs | Switching between panels of related content, one at a time |
| Planned Accordion | Expanding and collapsing sections, like the questions in an FAQ |
| Planned Breadcrumb | Showing where a page sits in the site, and the way back up |
| Planned Pagination | Moving 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.
| Component | What it's for |
|---|---|
| Shipped Spinner | Showing that something is busy, for a wait of unknown length |
| Planned Alert | Telling people something important, from a success to an error, right on the page |
| Planned Badge | Marking a status or a count, like "New" or "3" |
| Planned Avatar | Showing a person or a team, with a photo, their initials or an icon |
| Planned Progress | Showing how far along a task is, even when you can't tell how long it'll take |
| Planned Skeleton | Holding the layout while content loads, so nothing jumps around when it arrives |
| Shipped Card | Grouping 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.
| Component | What it's for |
|---|---|
| Planned Combobox | Typing to filter a list of suggestions, like when you pick a country |
| Planned Slider | Picking a value or a range by dragging, or with the arrow keys |
| Planned Date Picker | Typing a date or a range, or picking it from a calendar |
| Planned Table | Comparing rows of data, with sorting and selection |
| Planned Tree View | Browsing nested items, like the folders in a file explorer |
| Planned Command Palette | Finding 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.
Introduction
Open Components is the standard for perfect UI components, with a perfect user experience, developer experience and agentic experience.
MCP Server
Connect your agents to the standard, so they can read the contracts, every rule and the docs a section at a time as they build and review components.