Design · Components

The components.

30 primitives, in both Base UI and Radix flavors. Every specimen below is live; open a component for its variants, API, and source.

01

Actions

2 components

The pressable object: thin, flat, and 8px round, in every weight a surface needs.

Actions behind a trigger: items, shortcuts, and separators on a quiet surface.

02

Inputs

5 components

A single-line field with a label, drawn with a hairline.

Pick one value from a list, with groups and sizes.

Type to filter, then pick: a select with a search field.

A binary control in two sizes; the only capsule in the kit.

Keyboard keys as printed caps, for shortcuts and hints.

SearchKAsk AIISend
03

Display

14 components

A small label for status, categories, or metadata.

OutlineSecondaryMutedGhostInfoWarningSuccessDestructive

People as initials or images, alone or stacked in groups.

AU
TLMKJS
+3

The loading shape of content that has a known layout.

A hairline between things, horizontal or vertical.

Thread
DocsElementsCloud

Numbers that roll to their next value instead of jumping.

12

A dot-grid indicator for connecting, running, and settled states.

idleidle
loadingloading
thinkingthinking
streamingstreaming
searchingsearching
syncingsyncing
connectingconnecting
waitingwaiting
uploadinguploading
downloadingdownloading
listeninglistening
speakingspeaking
recordingrecording
successsuccess
errorerror
warningwarning
infoinfo
pausedpaused
stoppedstopped
offlineoffline

Code changes as unified or split diffs, line by line.

TSexample.ts+5-3
1-function greet(name) {
2- console.log("Hello, " + name);
1+function greet(name: string): void {
2+ console.log(`Hello, ${name}!`);
3 }
4
5-greet("World");
5+// Call the function
6+greet("World");
7+greet("TypeScript");

A quiet overlay scrollbar for panes that keep their own scroll.

Message 1: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 2: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 3: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 4: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 5: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 6: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 7: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 8: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 9: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 10: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 11: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 12: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 13: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 14: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 15: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 16: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 17: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 18: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 19: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

Message 20: This is a sample message to demonstrate the custom scrollbar styling with Radix UI ScrollArea.

A quiet aside on a colored rule, for notes, warnings, and errors in prose.

Info

Streaming starts after the first token arrives.

Warning

This adapter needs an API key at build time.

Success

The thread was exported as markdown.

A numbered rail for processes that happen in order.

Install the package

One command adds the runtime and the styles.

Wrap your app

The provider carries the thread state.

Send a message

The thread streams from your backend.

Highlighted code on a field panel, with a title bar and a copy button.

debounce.ts
export function debounce(fn, wait) {  let timer;  return (...args) => {    clearTimeout(timer);    timer = setTimeout(() => fn(...args), wait);  };}

One command in several dialects, with synced tabs and a copy button.

npm install @assistant-ui/react

A print-register data table with hairline rules and mono headers.

Radius scale of the design system.
TokenValueApplies to
--radius-control8pxButtons, inputs, menu items
--radius-surface10pxCards, popovers, panels
--radius-xl12pxDialogs, large surfaces
--radius-thread16pxThe chat viewport

A spec sheet of terms and details, one hairline per row.

commandsRecord<string, string>
Tab label to command line, in display order.
storageKey?string
Persists the selected tab and keeps every instance with the same key in sync.
onValueChange?(value: string) => void
Called when the user picks a tab.
04

Overlay

5 components

A modal sheet for decisions that need the page to wait.

Anchored detail on demand, dismissed by clicking away.

A short label that appears on hover and stays out of the way.

A panel that slides in from an edge for secondary flows.

A passing message for outcomes: success, error, and undo.

05

Navigation

4 components

Switch between views without leaving the page.

Manage your account settings and preferences.

Where you are, as a path you can walk back up.

Sections that expand one at a time, or all at once.

One region that folds open and closed in place.