@formspec/core
v0.1.0-alpha.4
Published
Core utilities for formspec
Readme
@formspec/core
Core type definitions for the FormSpec library.
Installation
npm install @formspec/core
# or
pnpm add @formspec/coreNote: Most users should install the
formspecumbrella package instead, which re-exports everything from this package.
Requirements
This package is ESM-only and requires:
// package.json
{
"type": "module"
}// tsconfig.json
{
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext"
}
}Overview
This package provides the foundational types used throughout the FormSpec ecosystem:
- Form element types:
TextField,NumberField,BooleanField,StaticEnumField,DynamicEnumField,ArrayField,ObjectField - Structural types:
Group,Conditional,FormElement,FormSpec - State types:
FieldState,FormState,Validity - Data source types:
DataSourceRegistry,DataSourceOption,FetchOptionsResponse - Predicate types:
EqualsPredicate,Predicate
Usage
import type {
FormSpec,
FormElement,
TextField,
NumberField,
AnyField,
Group,
Conditional,
} from "@formspec/core";
// Type guard for field elements
function isField(element: FormElement): element is AnyField {
return element._type === "field";
}
// Process form elements
function processForm(form: FormSpec<readonly FormElement[]>) {
for (const element of form.elements) {
if (isField(element)) {
console.log(`Field: ${element.name} (${element._field})`);
} else if (element._type === "group") {
console.log(`Group: ${element.label}`);
}
}
}Type Reference
Field Types
| Type | Description |
|------|-------------|
| TextField | Text input field |
| NumberField | Numeric input field |
| BooleanField | Boolean/checkbox field |
| StaticEnumField | Dropdown with static options |
| DynamicEnumField | Dropdown with dynamic options from resolver |
| DynamicSchemaField | Field with dynamic schema from resolver |
| ArrayField | Array of nested elements |
| ObjectField | Nested object with child fields |
| AnyField | Union of all field types |
Structural Types
| Type | Description |
|------|-------------|
| Group | Groups related fields with a label |
| Conditional | Shows fields based on predicate |
| FormElement | Union of AnyField, Group, Conditional |
| FormSpec<E> | Complete form specification |
State Types
| Type | Description |
|------|-------------|
| Validity | "valid", "invalid", "unknown" |
| FieldState<T> | Runtime state of a single field |
| FormState<S> | Runtime state of entire form |
License
UNLICENSED
