Skip to content
All primitives

A primitive is one control you drop into a form or a toolbar — a segmented control, an input with an addon, a tag field.

AI & Chat

7 of the 54 primitives in the catalog. Every one is a single file of plain markup and Tailwind classes — paste it and it works.

Open the full page for this primitive

Message Bubble

One turn in a thread, with the part every chat UI leaves out: the speaker is in the text rather than implied by which side the bubble sits on, so a screen reader hears a conversation instead of an unattributed monologue.

AI & Chat178 linesNo deps
Open the full page for this primitive

Prompt Input

The composer, reduced to the four things that are actually hard: Enter that does not fire mid-IME-composition, one submit path for button and keyboard alike, stop as a separate button from send, and a row cap measured from the real line height.

AI & Chat177 lines1 dep
Open the full page for this primitive

Tool Call

A single tool invocation that opens into its arguments and result — status carried by a glyph and a word rather than a colour, arguments as a definition list, and a duration formatted arithmetically so it cannot drift at hydration.

AI & Chat202 lines1 dep
Open the full page for this primitive

Reasoning Panel

The "Thought for 12s" disclosure, built on a native details element — so it keeps its state without JavaScript, needs no ARIA at all, and renders on the server in the same pass as the answer above it.

AI & Chat110 lines1 dep
Open the full page for this primitive

Citation Chip

A numbered source reference whose accessible name is the source rather than the numeral — because eight links all called a digit cannot be told apart in a screen reader link list, which is how many people navigate a page.

AI & Chat134 linesNo deps
Open the full page for this primitive

Typing Indicator

Three dots that stop moving for anyone who asked their OS for less motion, and a polite live region that says who is typing — so the information was never carried by the animation in the first place.

AI & Chat98 linesNo deps
Open the full page for this primitive

Prompt Suggestions

The starters that fill an empty thread, as a real list of real buttons rather than the usual grid of clickable divs — reachable by keyboard, skippable in one keystroke, and named for the prompt they actually send.

AI & Chat121 linesNo deps