Components
12 primitives, each drawn live below with the code that makes it. Every one ships in src/components/ui and keeps the same API in every Pipe theme.
12 components
Actions
Button
A capsule at every size. One filled button per form marks the next action; the rest step back.
2 parts · 5 propsAPI reference for ButtonToggle group
Showing one week
A set of pressed-state buttons for choosing a view or a filter. Spacing 0 joins them into one segmented control.
2 parts · 7 propsAPI reference for Toggle group
Forms
Input
Shown to everyone you invite.
A 44px field with an 8px corner. Invalid is a border state, and the focus ring is painted once, globally.
1 part · 4 propsAPI reference for InputSwitch
An immediate on/off. Its hit box reaches 44px on coarse pointers without the track growing.
1 part · 5 propsAPI reference for SwitchCheckbox
A 4px-corner box for one of many choices. Indeterminate is a state of its own, never a styling trick.
1 part · 4 propsAPI reference for Checkbox
Display
Badge
PublishedNeeds reviewDraftEssaysA compact label. Status variants carry meaning and always travel with words; the brand tint marks a category.
3 parts · 3 propsAPI reference for BadgeAvatar
IMTORA+47 collaborators
A round portrait with initials as the fallback. A hairline keeps pale photos from dissolving into the card.
5 parts · 2 propsAPI reference for AvatarKbd
Press⌘Kto search, or/anywhere.
A key in the running text. Monospaced, quiet, and never a target of its own.
2 parts · 2 propsAPI reference for Kbd
Feedback
Alert
Fonts are self-hostedNo request leaves the build.A tinted block for something the reader should know before going on. The icon partners the colour.
4 parts · 3 propsAPI reference for AlertProgress
Importing notesA measured bar with an optional label and value. Omit the value for indeterminate.
5 parts · 3 propsAPI reference for Progress
Navigation
Tabs
12 notes, 3 unread.Pill tabs by default, a line variant for page sections. The list owns its own sideways scroll.
4 parts · 5 propsAPI reference for TabsBreadcrumb
Where the page sits. The last crumb is the page itself and carries aria-current, not a link.
6 parts · 2 propsAPI reference for Breadcrumb
Was this page helpful?
Answers stay in this browser session. This demo sends nothing.