Browse · collection
React form elements
Accessible form components for React, each a capability with its own page, its own render tests and TypeScript you can read. The pure helpers they use are ordinary capabilities: some run in Python and Rust too, so a server can check what the form checked.
Components
Everything published as react.form.* : 13 capabilities, written for React in TypeScript only.
react.form.button React ^19 · TypeScript only
A form button in primary, secondary or warning style that stays focusable while loading (GOV.UK button).
Not available in Python
1.0.1ts 13 tests
react.form.checkbox React ^19 · TypeScript only
One checkbox with its label beside it, such as "I agree to the terms" (GOV.UK single checkbox).
Not available in Python
1.0.1ts 14 tests
react.form.checkbox-group React ^19 · TypeScript only
A question answered by ticking any of several checkboxes, with item hints and an exclusive "None" (GOV.UK checkboxes).
Not available in Python
1.0.1ts 24 tests
react.form.date-input React ^19 · TypeScript only
Day, month and year boxes under one legend, with hint, error message and the boxes in error marked (GOV.UK date input).
Not available in Python
1.0.1ts 14 tests
react.form.error-summary React ^19 · TypeScript only
A "There is a problem" box linking to each field in error, focused on arrival, built from a validator's fields (GOV.UK).
Not available in Python
1.0.1ts 21 tests
react.form.fieldset React ^19 · TypeScript only
Group related inputs under a legend, with a hint and error message described to the whole group (GOV.UK fieldset).
Not available in Python
1.0.1ts 10 tests
react.form.form-field React ^19 · TypeScript only
Wire a label, hint and error message to one form control by id, the accessible way (GOV.UK form group pattern).
Not available in Python
1.0.1ts 19 tests
react.form.password-field React ^19 · TypeScript only
A password input with a Show/Hide button and an optional live checklist of a password policy (GOV.UK password input).
Not available in Python
1.0.1ts 22 tests
react.form.radio-group React ^19 · TypeScript only
Choose exactly one of several radios, with item hints, an "or" divider and inline yes/no (GOV.UK radios).
Not available in Python
1.0.1ts 14 tests
react.form.select React ^19 · TypeScript only
A labelled drop-down list with a hint, error message and an optional empty first option (GOV.UK select).
Not available in Python
1.0.1ts 15 tests
react.form.styles React ^19 · TypeScript only
An optional stylesheet for the react.form elements' caps-* classes, themed by --caps-form-* custom properties.
Not available in Python
1.0.1ts 21 tests
react.form.text-field React ^19 · TypeScript only
A labelled single-line text input with hint, error message, autocomplete, prefix and suffix (GOV.UK text input).
Not available in Python
1.0.1ts 14 tests
react.form.textarea React ^19 · TypeScript only
A labelled multi-line text box with hint, error and an optional live character or word count (GOV.UK).
Not available in Python
1.0.1ts 16 tests
The pure helpers they use
Written for no framework: what the components require, and every form.* capability. A component may require one of these; none of these may require a component.
auth.password-policy
Check a new password against a named policy (NIST SP 800-63B-4 by default): length, common passwords, name and email.
A group of 2: password_policy, check_password
1.0.1py rs ts31 tests
form.character-count
The GOV.UK character count message for a text box: characters or words left or over a limit, with a threshold.
character_count in Python
1.0.1py rs ts32 tests
form.date-parts
Check a date typed into day, month and year boxes, with GOV.UK's error messages and the boxes to mark in error.
validate_date_parts in Python
1.0.1py rs ts49 tests
form.state TypeScript only
A form's state as a pure reducer: values, touched fields, validator errors and the submit, for useReducer.
Not available in Python
1.0.1ts 40 tests
Use them
Name a component in one line, in the file that renders it:
import { TextField } from "#fune/react.form.text-field@^1" ;
Functional Weave ships the component, not React: install it in the project once.
npm install react react-dom
Then build, which resolves each one and the helpers it requires into .fune/build as .tsx you can read. A client component keeps its "use client" at the top of the built file.
fune build
Optional: react.form.styles for the default look. The components only set class names, so your own CSS works as well.
The forms suite is the same set as a plan, with the validation each form needs and the gaps.
These are TypeScript only: in a Python or Rust project fune build stops and says so. A helper without a flag runs in all three languages. Frameworks and language subsets .