Vesture

Component specification index

Components

All 63 components are free and open source — each with a live demo, full prop reference, and behavior notes. Every one reads exclusively from the token contract; no component ships a hardcoded color.

Inputs

Button

A native button with three visual weights. Forwards its ref and spreads every standard button attribute, so it drops into forms, dialogs, and toolbars without a wrapper.

Input

A styled text input with a built-in invalid state.

Textarea

A multi-line text field matching Input's styling and invalid-state contract.

Select

A native <select> with a themed chevron affordance layered on top — no custom listbox to keep in sync with platform behavior.

Checkbox

A checkbox built on a visually-hidden native input, so it keeps full native form semantics while the visible box is styled from tokens.

Radio

A radio input using the same hidden-input pattern as Checkbox. Group multiple with a shared name.

Switch

A toggle switch — a native checkbox with role="switch" under the hood, so assistive tech announces it correctly while behaving like any controlled checkbox.

Label

A form label with an optional required marker, meant to pair with Input, Select, Textarea, Checkbox, Radio, or Switch.

NumberInput

A text input for numeric values with increment/decrement stepper buttons, min/max/step clamping, and full keyboard support.

Slider

A draggable, keyboard-navigable slider. Pass a two-element tuple as the value to get a range slider with two thumbs instead of one.

Rating

A star rating input built on native radio buttons, plus a read-only display mode for showing an average rating.

Combobox

A typeahead search-and-select input built on Floating UI, supporting single selection or multi-select with removable chips.

FileUpload

A drag-and-drop file upload queue with per-file progress, client-side validation, and a remove action — the upload mechanism itself is entirely up to you.

OTPInput

A segmented one-time-code input — one box per character, auto-advancing focus as you type, with full paste support for codes copied from SMS/email.

SignaturePad

Canvas-based signature capture with smooth freehand strokes, DPR-correct rendering, and export to a PNG data URL.

RichTextEditor

A contentEditable rich text editor with a formatting toolbar, tables, images, text color/highlight/font-size, Notion-style markdown shortcuts, and a slash command menu — all sanitized through the same DOMPurify allowlist on every emitted change.

ColorPicker

A full color picker — saturation/lightness gradient, hue strip, preset swatches, and a format-aware text input — for theme customization and design-tool UIs.

MentionsInput

A contentEditable text input that opens a filtered autocomplete dropdown on "@" (or any trigger character) for tagging users/entities, inserting them as distinct non-editable chips.

ImageCropper

A draggable, resizable crop rectangle over a source image, with an imperative ref handle that exports the crop at the image's native resolution — not its on-screen display size.

Overlays

Navigation

Feedback

Data