Every component, accounted for.
All 51 StaqUI components have a typed export, a runnable example, a dedicated documentation page, and a structural accessibility test.
Each entry documents the supported behavior and implementation boundaries. The API reference is generated directly from the package’s TypeScript exports.
ButtonActions
Pill-shaped buttons come in three variants. Use primary for the main action, secondary for supporting actions, and tertiary for quieter actions. Apply the critical tone to destructive actions at any level of emphasis. Small, medium, and large have minimum heights of 28px, 34px, and 42px. Use fullWidth to fill the available space. On native buttons, loading disables interaction and centers a spinner while preserving the button width. Use asChild with a single link for navigation.
Open staqui documentationButton groupActions
Named React children replace primary-action and secondary-actions slots. All actions retain independent tab stops.
Open staqui documentationTabsActions
Supply items with unique values, labels, and panel content. Use defaultValue for an initial selection, or pair value with onValueChange to control it.
Open staqui documentationClickableActions
A native button for custom interactive content. Use Link for navigation and className or style for presentation.
Open staqui documentationClickable chipActions
Selection uses aria-pressed; removal is a separate sibling button. The parent owns selection and removal state.
Open staqui documentationLinkActions
A native anchor supports navigation and downloads. Use Button for actions.
Open staqui documentationMenuActions
Radix provides roving focus, typeahead, disabled items, Escape and focus restoration. Items support groups and links; nested submenus are not exposed.
Open staqui documentationBadgeFeedback
Five semantic tones communicate status with a visible text label. Badges are not live regions.
Open staqui documentationBannerFeedback
Dismissal is local until remounted; use onDismiss to persist it. Critical banners use alert, other tones use status. React action replaces the secondary-actions slot.
Open staqui documentationEmpty stateFeedback
React action and graphic props replace named slots. It never fabricates content or a successful network action.
Open staqui documentationProgressFeedback
Native progress, max defaults to 100, values are clamped. Missing value is indeterminate with a static striped fallback; it does not animate. The indicator uses the brand token rather than per-instance status tones.
Open staqui documentationSpinnerFeedback
A named status region announces loading. CSS rotation stops under reduced motion, while the status label remains available.
Open staqui documentationCheckboxForms
Supports controlled/uncontrolled checked state and the native indeterminate property. Required and validation are native browser behavior.
Open staqui documentationChoice listForms
Uses fieldset/legend and native radio or checkbox inputs. Values are arrays in both modes. Rich secondary option content is not exposed; option labels are strings.
Open staqui documentationColor fieldForms
Six-digit RGB hex only. Alpha, HSL and wide-gamut formats are deliberately excluded. A custom picker opens from the swatch beside the editable hex value.
Open staqui documentationColor pickerForms
Uses six-digit RGB hex. Drag in the color square or use the keyboard sliders to adjust saturation, brightness, and hue.
Open staqui documentationDate fieldForms
The calendar button opens DatePicker. The input retains ISO string values, min/max, required, and readOnly.
Open staqui documentationDate pickerForms
React DayPicker supports single/range selection, one/two months, localized labels, month navigation and disabled matchers. Values are Date objects.
Open staqui documentationDrop zoneForms
Files remain local and are passed to onFilesChange. Type, count and maximum bytes are checked on both chooser and drop paths. No upload service, directory traversal or content scanning. Applications must submit callback files for drag-and-drop; native file FormData covers chooser selections only.
Open staqui documentationEmail fieldForms
Native type=email and autocomplete=email replace custom input handling. Application errors are supplied through error; browser constraints validate on form submission.
Open staqui documentationMoney fieldForms
Currency symbol and code use Intl.NumberFormat; input remains an ungrouped decimal string for predictable editing. This is not financial arithmetic, exchange conversion or locale-specific currency parsing.
Open staqui documentationNumber fieldForms
Native type=number exposes min/max/step and browser steppers. Values emitted by onValueChange remain strings so empty input is representable.
Open staqui documentationPassword fieldForms
A named, pressed-state visibility toggle preserves focus and value. No password strength scoring or authentication service is included.
Open staqui documentationSearch fieldForms
Native type=search with a decorative icon. Filtering is application-owned, as shown in the live example.
Open staqui documentationSelectForms
Single-select options can include descriptions. The selected option shows a checkmark. Multiple selection and listbox sizing use the native control.
Open staqui documentationSwitchForms
A native checkbox with role=switch provides Space activation, form participation and checked state. Its visible label describes the setting, not the current state.
Open staqui documentationText areaForms
Native textarea with rows, min/maxLength and vertical resizing. Character counting is an application composition, shown in the example.
Open staqui documentationText fieldForms
Native input attributes with label, description, error, prefix, suffix and onValueChange. Compose accessory actions using React nodes.
Open staqui documentationUrl fieldForms
Native type=url handles validation and input keyboard. It does not prepend a scheme or rewrite input silently.
Open staqui documentationBoxLayout
Semantic tokens control padding, surface, border and radius. Use className or style for additional layout.
Open staqui documentationDividerLayout
Native hr is horizontal by default; vertical mode is intended for flex layouts and has the matching aria-orientation.
Open staqui documentationGridLayout
Responsive auto-fit columns replace GridItem elements and responsive DSL strings. Children can use CSS gridColumn/gridRow. minColumnWidth prevents squeezed content.
Open staqui documentationOrdered listLayout
Native ol/li semantics. ListItem is exported for both list components. Native ordered-list attributes such as start and reversed pass through.
Open staqui documentationPageLayout
An outer div avoids injecting a second main landmark inside host applications. Provide the main landmark in your app. Heading is h1; React nodes replace named content areas.
Open staqui documentationQuery containerLayout
Native CSS container-type:inline-size and container-name. Write standard @container rules in the consuming application.
Open staqui documentationSectionLayout
Native section is named by its heading. Default heading level is h2; nested semantic structures can be authored using Box and Heading.
Open staqui documentationStackLayout
Flex direction, gap, align, justify and wrapping replace the layout-specific syntax. Semantic HTML belongs in children; the wrapper is a neutral div.
Open staqui documentationTableLayout
Generic typed columns, client sorting and controlled selection. Pagination is callback-driven. Tables scroll horizontally on small screens. Virtualization and editable spreadsheet cells are not included.
Open staqui documentationUnordered listLayout
Native ul/li and standard list semantics; use ListItem or plain li children.
Open staqui documentationAvatarMedia
Name supplies accessible text and derived initials. Failed images fall back to initials. No remote avatar service or fabricated profile photographs.
Open staqui documentationIconMedia
A curated Lucide name map with a source prop for custom Lucide icons. Decorative icons are hidden; meaningful icons require a label.
Open staqui documentationImageMedia
Native img supports srcSet, sizes, loading and error handlers. Applications own image assets and fallback policy.
Open staqui documentationThumbnailMedia
Native image with small/medium/large dimensions. Alternative text is required. Source failures use native behavior unless an onError handler is provided.
Open staqui documentationModalOverlays
Radix Dialog handles focus, Escape, background inertness and scroll lock. Controlled open/onOpenChange replaces imperative show/hide methods. Title and description are required.
Open staqui documentationPopoverOverlays
Radix handles anchoring, collision avoidance, Escape and focus return. It is nonmodal; use Modal for tasks that must block background interaction.
Open staqui documentationChipTypography
The onRemove callback is parent-owned. Removal has a separately named button. Colors use the shared semantic tones.
Open staqui documentationHeadingTypography
Explicit level and visual size are independent. No automatic hierarchy inference, accessibilityRole override or line clamping.
Open staqui documentationNumberTypography
Intl.NumberFormat adds locale/currency/percent formatting beyond tabular styling. Numeric formatting is presentation, not decimal arithmetic.
Open staqui documentationParagraphTypography
Native p accepts inline React content and semantic tone. Clamping and numeric variants can be expressed in application CSS.
Open staqui documentationTextTypography
Native span with size, weight and semantic tone. Use strong/em/code directly for semantic emphasis rather than visual-only text variants.
Open staqui documentationTooltipTypography
Radix opens immediately on keyboard focus and after 800ms hover. Tooltip content is plain text, dismisses on Escape, and should never contain required instructions or interactive controls.
Open staqui documentation