Skip to content
buttery

v1.0.0

Source on GitHub

Version 1.0.0

All components

Every component, in the group of the job it does, with what each one is for.

This page lists every buttery component in the group the sidebar gives it, with the line its own page starts with. Use it to find the component for a job: each name opens its page, with a live demo, examples and props.

The building blocks have sections of their own:

  • Stack, Inline, Grid and Surface are in Layout.
  • Text and Icon are in Foundations.
  • The motion presets are in Motion.
  • Page-sized parts, such as AppShell, are in Patterns.

Actions

ComponentWhat it's for
ArrowLinkA text link with the navigation arrow, for See all, Learn more and moving through content.
ButtonA button for actions: four variants, three sizes, a loading state, icons and a navigation arrow.
ChipA small reset action that sits next to a control, such as Reset beside a slider's label.
FloatingToolbarA floating pill of actions anchored under an element, such as crop mode's size, Reset, Cancel and Apply.
IconButtonA square button that shows only an icon, named by a label that also appears as its tooltip.
InfoButtonAn info button that explains a value: on hover and focus in a tooltip, and on a press or a tap in a popover that stays.
PressableAn unstyled button with buttery's press feedback and focus ring.
QuickActionsA row of small soft buttons for the things people do most on a page, folding into a menu when they don't fit.
SplitButtonA primary action with a menu of related ones beside it: two halves of one pill, each its own button.

Inputs

ComponentWhat it's for
ColorPickerA color area, a hue track and a hex code for picking any color, with optional presets.
ControlThe root of a fixed-height control you build yourself: a token height, matching padding and data-bt-control.
DateRangeBarThe period a report covers: a range with presets or two dates, the interval its charts group by, and what it's compared with.
DropZoneAn area that takes files dropped on it, pasted or opened with a shortcut, and says so while a file is held over it.
FieldA label, an optional hint and an error message wired to any form control by id.
NumberFieldA small field for an exact number, with arrow-key steps, a stepper on hover and scrubbing by dragging its label.
PasswordFieldA labelled password box with a button that shows or hides what's typed, and optional requirements.
SearchFieldA field for finding things: a search icon, a clear button once it holds text, and an optional shortcut that focuses it.
SliderA labeled slider row: the label and its value badge beside a track you drag, click or step with the keyboard.
TextAreaA labelled box for longer text that grows with what's typed up to a limit, then scrolls.
TextFieldA labelled box for a line of text, with a hint, an error and optional icons.
TiltPadA small pad for tilting something in 3D: drag the knob or use the arrow keys.
IdentifierFieldOne field for an email address or a phone number, which tells them apart as they're typed and formats a phone number as it goes.
OneTimeCodeFieldOne input for a one-time code, drawn as a slot per digit, that takes a pasted or autofilled code whole.

Selection

ComponentWhat it's for
AnchorGridA 3×3 grid of dots for picking where something sits: a corner, an edge or the center.
CheckboxA box to tick for one yes-or-no choice, with its label beside it.
ColorDotA small round swatch that opens buttery's color picker in a popover to choose any color.
FilterBarA row of filter pills over a list that wrap as they're applied, with Clear filters and actions, folding into one button on a phone.
OptionTilesSeveral choices at once, as tiles that take a press anywhere.
PreferencesMatrixOn and off choices in groups, against channels such as email and push.
RadioCardGroupOne choice among a few explained options, one of which can reveal its own field.
SegmentedControlOne choice out of a few, shown side by side in a track, with the selection sliding between them.
SelectA trigger that shows the chosen value and opens a list to pick another, with an optional footer for custom values.
SwatchGridA grid of color and gradient swatches to pick one from, like radio buttons.
SwitchA switch that turns a setting on or off at once, with its label beside it.
ViewToggleTwo icon segments that switch a collection between a grid and a list, each named by its tooltip.
ComponentWhat it's for
AccountMenuThe workspace switcher at the top of a sidebar and its menu: the workspace, switching to another, the person signed in, and signing out.
BreadcrumbsThe trail of pages above a nested page, as links above its title.
CommandSearchThe top bar's search: grouped results from typed sources, filters and recent searches.
MorphMenuA row of menu triggers whose menus open in one floating panel that reshapes from menu to menu instead of closing and reopening.
NavBarThe bar across the top of a page: the brand, menus that open in one morphing panel, and the calls to action, static, sticky or auto-hiding.
PageDotsA row of dots showing which step of a few is current, the current one a pill that moves on spring.snappy.
SavedViewsA track of saved views of a list, the chosen one on a sliding raised pill, with every view and its actions in a menu.
SettingsIndexA settings home page: titled sections of links, each with an icon, a title and a line on what's inside, in up to three columns.
SidebarAn app's navigation down the side: a workspace switcher, items, titled sections, groups that fold, and the pages visited lately.
StatTabsEqual tabs over a list that each show a view's count, the chosen one on a sliding raised panel, a select on a phone.
SubNavA sticky bar of links to the sections of a long page, under the nav bar, marking the section the reader is in.
TabNavUnderlined tabs that go to other pages, marking the current one, with the links that don't fit in a menu.
TabsTabs that switch the panel under them, underlined, as pills or boxed on a track, with a sliding marker and the tabs that don't fit in a menu.
TopBarThe bar over a dashboard's page: search at its start, icon actions and a round create button at its end.

Overlays

ComponentWhat it's for
AnnouncementDialogWhat's new, once: a large dialog with a title, short sections and an illustration, a Got it button and a link to read more.
ChoiceDialogA dialog that offers a few ways to go: each a row with an icon, a title, a line and an arrow, choosing one closes it.
ConsequenceDialogA dialog that spells out what saying yes will do before anyone confirms.
ContextMenuA menu of actions for what's under the pointer: it opens where a right-click or a long press lands, or at the focused element from the keyboard.
DialogA modal dialog that dims the page, traps focus and hands it back when it closes.
ExpandableCardA bento card that opens into a dialog by turning into it, its title travelling along, and closes back into the card.
FormDialogA dialog that asks for a value or two, Submit waiting until the form is valid.
FullscreenDialogA dialog that takes the whole window for one big question and its answer.
MenuA list of actions that opens from a trigger, on the floating surface in the dropdown layer.
NotificationNudgeA small popover that points at a button with news, once: a title, a line, an action and Later, opening by itself without taking focus.
PopoverA floating panel anchored to a trigger, on the floating surface in the dropdown layer.
SheetA panel that slides in from an edge of the window over a dimmed page: a side panel on a laptop and a drawer on a phone.
SidePanelA panel beside the page, such as help, that narrows the page instead of covering it.
TooltipA short label that appears beside an element after the pointer rests on it, or when it takes keyboard focus.

Data display

ComponentWhat it's for
AccordionA list of items that each open in place: a trigger row over a panel whose height follows its content.
AreaChartValues over time as lines with their area filled in faintly, for totals that build up, with a crosshair and tooltip.
AvatarA person's round picture, or their initials when there's none or it fails to load.
BarChartValues per period or category as bars, side by side for each series, with a column that highlights on hover.
CatalogParts for any catalog: a root that searches, filters, sorts and pages its items, a toolbar, and cards in a grid, a list or rows.
ChartFrameThe frame buttery's charts are drawn in: gridlines and axis labels, a crosshair or column with a tooltip, keyboard steps, a screen-reader table, and no-data and loading states.
ColumnSettingsA button that opens a list of a table's columns to show, hide and reorder by dragging or with Alt and the arrow keys.
DataTableA table of records: columns with minimum widths and shares, selection, sorting, row actions, a sticky header and first column, skeleton rows and pagination.
GroupedListThings grouped in one well: card rows with media, a title, a line and a value, under optional titles with a … menu, and a dashed row that adds one more.
HoverActionsA row whose actions show on hover and keyboard focus, with an accent bar.
InitialsTileA square tile with up to two initials, standing in for a workspace or team that has no picture.
KbdKeycaps for a keyboard shortcut, with mod shown as Command on Apple platforms and Ctrl elsewhere.
LineChartValues over time as smooth lines, the comparison in gray beneath, with a crosshair and tooltip that follow the pointer.
MetricCardOne metric on a card: its title, value and change against the previous period, a small chart of both periods, and when it was updated.
ScopeBadgeA badge after a settings page's title that says what its settings apply to.
SparklineA trend at a glance: one small line, no axes, its last point marked, for a table row or beside a number.
TagChipA small tag with a colored dot, outlined by default or soft or solid in its tone.
ValueBadgeA small badge that shows a formatted value and keeps room for its longest value, so it never changes width.

Feedback and status

ComponentWhat it's for
BannerA one-line suggestion across a page: an icon, the message, an action and how long it takes, dismissed for good once closed.
CalloutA tinted box for a message in place: information, success, a warning or an error.
ConfettiA short burst of confetti from an element, for a genuine finish such as completing onboarding.
EmptyStateWhat shows where content will be: a title, a line about how to add some, and the actions that do.
FeatureIntroIntroduces a feature on its empty page: a title, a line, two or three benefits, a primary action and docs beside an image.
LoadingPillA small pill with a spinner that says something is loading, shown only once loading has lasted 300ms.
RecommendationCardA tip on a card: what to try, why, a link to do it and how long it takes, with optional media, dismissed for good once closed.
SetupGuideA floating checklist in the bottom-end lane: progress, the next task, and every task when unfolded, remembered across visits.
SkeletonA shimmering placeholder for something still loading, shaped like the text or block it stands in for.
StatusBadgeA short label for a record's state, such as Paid or Overdue, in a tone that repeats what it says.
ToasterShows short messages from toast() at the bottom of the window, three at most, each leaving on its own after a few seconds; ButteryProvider mounts one, so an app only calls toast().
  • Make anything buttery

    The four ways to bring buttery into an app, from wiring up the provider to whole-page patterns.

  • App shell

    The frame of a whole app, as an editor or a dashboard, and the page that goes in it.