Form integration

Native form behavior, with deliberate callback contracts.

Uncontrolled forms

Named native fields work with FormData and browser validation. Uncontrolled Checkbox, Select and TextField use native reset. State-backed Slider, RadioGroup, Rating and Toggle synchronize with the owning form's reset event. Controlled values remain the application's responsibility.

Callback shapes

TextField, Checkbox and Select pass native React change events. Slider, Rating and Pagination pass numbers. Toggle and Accordion pass booleans. RadioGroup and SegmentedControl pass strings. Tabs uses onValueChange. These differences preserve the existing contracts.

React Hook Form

Hook-form is not a runtime library dependency. Register native fields directly. Use Controller for boolean/numeric/string callbacks, mapping field.value and field.onChange explicitly. The repository's form integration story demonstrates this pattern.

Read-only and disabled

Disabled controls are omitted from form data. Read-only TextField, RadioGroup and Toggle keep values without allowing changes. Rating readOnly is a display summary and is not submitted. Native Select has no readOnly semantics; show a summary or use a hidden field deliberately.

Errors

Pass error to TextField or Select for visible, linked validation text. For groups, link an external error region with aria-describedby and aria-invalid. Keep server validation authoritative.