Skip to content

shutteringv1.0.0

Forms & inputs

Text entry, selection controls, and a zod-validated form layer — all Base UI-backed, keyboard-operable, and focus-visible.

@shuttering/uiimport { Input, Textarea, Field, Select, Combobox, Checkbox, RadioGroup, Switch, Slider, Form, useForm } from '@shuttering/ui'

Text inputs

Input and Textarea are token-styled native controls; Field pairs a label with a control and an optional error.

PropTypeDefaultDescription
Field · labelReactNodeThe control label, associated with the child input.
Field · errorReactNodeAn error message rendered below the control in the destructive tone.
Input / TextareaReact.ComponentProps<'input' | 'textarea'>All native attributes — value, onChange, placeholder, disabled.

Selection controls

Checkbox, Switch, RadioGroup, and Slider — each a controlled Base UI primitive.

Plan
Threshold — 40
PropTypeDefaultDescription
Checkbox / Switchchecked, onCheckedChangeControlled boolean state. Checkbox reports true | false | "indeterminate".
RadioGroupvalue, onValueChangeA single selection; each option is a RadioGroupItem with a value.
Slidervalue: number[], onValueChange, min, max, stepA value array (supports multiple thumbs). Arrow keys nudge by step.

Select

A custom, keyboard-navigable listbox — designed top to bottom, not the native control.

PropTypeDefaultDescription
Selectvalue, onValueChangeControlled selection. Composes SelectTrigger / SelectValue / SelectContent / SelectItem.
SelectItem · value (required)stringThe value emitted when the item is chosen; its children are the label.

Combobox

A searchable single-select — type to filter a long list, arrow-key through the matches, Enter to pick. The popup scales in from the input, and the built-in filter narrows the options as you type.

PropTypeDefaultDescription
Combobox · items (required)string[]The full option list; the input filters it as the user types.
Combobox · value / onValueChangestring | nullControlled selection — null when nothing is chosen.
ComboboxContent · children(item, index) => ReactNodeRenders each already-filtered item, usually to a ComboboxItem.
ComboboxContent · emptyLabelstring'No results.'Shown when the filter matches nothing.

Form — zod-validated

useForm binds a zod schema to a form: register fields, surface per-field errors, and submit typed values.

PropTypeDefaultDescription
useForm(schema, opts)(ZodSchema, { onSubmit }) => UseFormReturnReturns register, errors, and handleSubmit bound to the schema.
register(name)(field) => FieldRegistrationSpread onto an Input/Textarea to wire value, onChange, and name.
errorsPartial<Record<field, string>>Validation messages, keyed by field — pass to FormField’s error prop.

Designed & built by stxkxs — React 19, Tailwind v4, and its own @shuttering/* packages.

Agent surfaces are always-on. Proprietary.

© stxkxs