Components
Component docs
Generated API and registry documentation for each Stalk UI component.
Typography
Renders body text with consistent size, weight, and tone.
HeadingTitles a section with a semantic heading level.
BlockquoteSets apart a quotation as a distinct block.
CodeMarks inline code or a short command within running text.
KbdMarks a keyboard key or shortcut.
LinkNavigates to another page or resource.
Inputs
Collects short-form text from a user.
TextareaCollects multi-line text from a user.
NumberInputCollects a number with steppers, keyboard control, clamping, and Intl formatting.
PasswordInputA password field with a reveal toggle, focus return, and reset-on-submit.
SearchInputA search field with a leading icon, clear button, and optional debounced changes.
FormatInputA text field preset for email, URL, or telephone — sets type, inputMode, and autocomplete.
PhoneInputCollects an international phone number with a country selector and live formatting.
OtpInputCollects a one-time passcode across discrete, auto-advancing slots.
EditableEdits text in place: a preview that swaps to an input on activation.
TextEditorA Tiptap-backed rich text editor with a composable toolbar, bubble menu, and character counter.
Selection
Toggles a binary option in a form or settings surface.
RadioSelects one option from a related set of choices.
SwitchToggles a setting on or off.
ToggleA two-state button for inline preferences and toolbar controls.
SelectLets a user choose one option from a native menu.
ComboboxSelects a value from a searchable list in a popover.
TagsInputCollects multiple values as removable Tag chips with keyboard and paste entry.
SliderSelects a numeric value or range along a track.
RatingCollects or displays a star rating with radio-group semantics.
ColorPickerPicks a color via a saturation area, hue/alpha sliders, hex input, and swatches.
Date & Time
Forms & Buttons
Triggers an action or submits a form.
CopyButtonCopies a value to the clipboard with a transient confirmation state.
FileUploadAccepts files via drag-and-drop or browsing, with validation and a removable list.
FormWires react-hook-form fields to accessible labels, descriptions, and errors.
LabelAssociates text with a form control.
Tables & Lists
Renders sortable, paginated tabular data with TanStack Table.
DataTableAdvancedExtends the data table with expandable detail rows, frozen columns, and a sticky header, plus a headless useDataTable hook.
DataListPresents label/value pairs as an aligned definition list.
TablePresents rows and columns of data in an accessible HTML table.
TreeNavigates hierarchical items with expand/collapse, single or multiple selection, typeahead, and full keyboard support.
VirtualListRenders only the visible window of a large list, keeping the DOM small for huge backlogs. Supports variable item heights and horizontal orientation.
SortableReorders a list by dragging, with keyboard and pointer support. Controlled and headless — compose it into reorderable lists, sortable rows, or multi-column boards.
Data Visualization
A theming contract for charts; bring your own recharts.
SparklineDraws a compact inline-SVG trend line with no charting dependency; tints follow the tone and color mode.
HeatmapPlots a labeled matrix of color-coded cells with sequential or diverging ramps that follow the theme and color mode.
QrCodeRenders a scannable QR code, optionally with a center logo.
Display
Represents a user or entity with an image, initials, or fallback content.
BadgeDisplays compact, non-interactive status or metadata. For actionable or removable labels, use Tag.
CardGroups related content and actions on a single bordered surface.
TagAn interactive chip — clickable, removable, with optional avatar, icon, or count. Use over Badge when the label is actionable.
StatDisplays a KPI read-out with label, value, toned delta, and a trend slot.
TimelineLists chronological events along a rail of toned dots and connectors.
EmptyStateCommunicates an empty view with an icon, message, and next-step actions.
SwapSwaps between two elements in place with a fade, rotate, flip, or scale transition. Presentational — pair with the control that owns the state.
Navigation
Shows the path to the current page as a navigable trail.
NavigationMenuPresents site navigation with links and rich dropdown panels.
PaginationNavigates between pages of a large, split data set.
SidebarProvides a collapsible, keyboard-toggled application sidebar.
StepsShows progress through a multi-step flow with numbered, stateful indicators.
TabsOrganizes related content into selectable panels.
ToolbarGroups related controls in a single keyboard-navigable bar.
Menus
Overlay
Displays modal content in a focus-trapped overlay.
AlertDialogInterrupts with a modal that requires an explicit confirm or cancel.
DrawerA touch-first gesture sheet (Vaul) with drag-to-dismiss physics, openable from any edge via `direction`. Use over Sheet when the surface should answer to swipe gestures — typically mobile.
SheetSlides a panel in from a screen edge for secondary content or forms. Dialog semantics, pointer-agnostic — use Drawer for a gesture-driven mobile sheet.
PopoverDisplays interactive floating content from a trigger.
HoverCardPreviews rich content when a link or control is hovered or focused.
TooltipProvides supplemental context when a control is hovered or focused.
TourGuides users through the UI by spotlighting targets with a step card.
Feedback
Surfaces an inline, persistent status message.
ProgressShows the completion progress of a task.
SkeletonReserves layout space with a shimmering placeholder while content loads.
SpinnerIndicates an indeterminate loading state with an accessible label.
ToastSurfaces transient notifications via a Sonner-backed toaster region.
Layout
Reveals related content in vertically stacked, expandable sections.
CollapsibleToggles the visibility of a single content region.
AspectRatioConstrains content to a fixed width-to-height ratio.
CarouselCycles through slides of content with prev/next controls.
ResizableSplits a layout into panels a user can resize by dragging.
ScrollAreaAdds a styled, cross-browser scroll viewport with custom scrollbars.
SeparatorDivides content with a horizontal or vertical rule.