Vize

Standard Schema Forms

Headless Standard Schema Forms; covers Standard Schema V1, TanStack Form, Formwerk.

Package @vizejs/ui/form
Maturity stable
Own the source vize lib pull form
Requires error-summary, field-wiring
Aliases forms, standard schema forms, validation forms
Covers Standard Schema V1, TanStack Form, Formwerk

API

formatFormFieldName

Convert a Standard Schema issue path into a conventional HTML field name.

function formatFormFieldName(path: readonly FormPathKey[]): string

normalizeStandardSchemaIssues

Convert Standard Schema issues into normalized field errors.

function normalizeStandardSchemaIssues( issues: readonly StandardSchemaV1.Issue[], options: FormFieldErrorOptions = {}, ): readonly FormFieldError[]

createFormErrorSummaryFields

Convert normalized field errors into unique fields for the error summary.

function createFormErrorSummaryFields( errors: readonly FormFieldError[], options: FormErrorSummaryFieldOptions = {}, ): readonly ErrorSummaryField[]

normalizeStandardSchemaResult

Normalize a Standard Schema validation result for form fields and summaries.

function normalizeStandardSchemaResult<Output>( result: StandardSchemaV1.Result<Output>, options: StandardSchemaValidationOptions = {}, ): FormValidationResult<Output>

validateStandardSchema

Validate a Standard Schema and normalize the result for form consumers.

async function validateStandardSchema<Input, Output>( schema: StandardSchemaV1<Input, Output>, value: Input, options: StandardSchemaValidationOptions = {}, ): Promise<FormValidationResult<Output>>

useFormField

Create normalized field state whose invalid flag can feed existing field wiring.

function useFormField(options: FormFieldOptions): FormFieldController

useFormErrorSummary

Create error-summary fields from normalized form errors.

function useFormErrorSummary( options: FormErrorSummaryOptions = {}, ): FormErrorSummaryController

normalizeNativeConstraintErrors

Convert native constraint-validation failures into normalized form errors.

function normalizeNativeConstraintErrors( form: HTMLFormElement, options: NativeConstraintErrorOptions = {}, ): readonly FormFieldError[]

useFormState

Create reactive form state around Standard Schema validation and submission.

function useFormState<Input, Output = Input>( options: FormStateOptions<Input, Output> = {}, ): FormStateController<Input, Output>

Behavior

Normative state x input -> outcome table for the Standard Schema form foundation (@vizejs/ui/form). Every row is proven by the named test in src/families/form/form/form.test.ts; compile-only assertions live in src/families/form/form/form.types.test-d.ts.

# State Input Outcome Proven by
F1 any Standard Schema issue path path formats into a deterministic HTML field name formats Standard Schema paths as form field names
F2 failed Standard Schema issues field errors preserve messages, names, and unwrapped paths normalizes Standard Schema failures into field and summary errors
F3 failed duplicate field errors summary fields keep the first error per document id deduplicates summary fields while preserving all field errors
F4 any sync or async schema validation result normalizes into success or field-summary failure state validates sync and async Standard Schemas
F5 any malformed schema, result, or options throws a stable form diagnostic rejects malformed schemas, results, and options
F6 valid field receives a matching error useFormField supplies an invalid flag for field wiring wires field invalid state from normalized errors
F7 invalid field errors feed summary composable useFormErrorSummary exposes existing error-summary fields feeds normalized errors into an error summary controller
F8 public types mismatched schema input or mutation compilation rejects misuse src/families/form/form/form.types.test-d.ts
F9 native form constraint-invalid controls errors normalize through the same field and summary pipeline normalizes native constraint validation failures
F10 editing field visit, change, and blur events dirty, visited, and touched state are tracked per field tracks field state and focuses the first registered invalid field
F11 invalid submitted form has registered fields focus moves to the first invalid field in current error order tracks field state and focuses the first registered invalid field
F12 validating a slower validation finishes last stale results return to their caller but cannot replace state discards stale async validation results
F13 submitting latest validation succeeds onSubmit runs once for the latest valid result submits only the latest valid result