import { defineForm, Email, Form, Select, Submit, Text } from '@open-form-build/core'; export const config = defineForm({ title: 'Join the beta' }); export default function Beta() { return ( <Form> <Text name="name" label="Name" required /> <Email name="email" label="Work email" required /> <Select name="team" label="Team size" options={sizes} /> <Submit>Request access</Submit> </Form> );}Each field brings its label, validation and ARIA. Submit it empty: the browser shows the same errors the server would return.
A form is a file.
Fields, pages and conditions are components in one .tsx file. Open Form renders it once on the server to learn its fields, so the browser and the API enforce the same rules.