This component is returned by useForm().
You are required to render one – and only one – of these to make your form work.All inputs must be inside of the <Form />.

Example

form-dialog.tsx
import React from "react";
import { Forms, useForm, showToast } from "attio/client";

export function FormDialog() {
	const { Form, SubmitButton, TextInput } = useForm(
		{
			firstName: Forms.string(),
			lastName: Forms.string(),
		},
		{
			firstName: "",
			lastName: "",
		},
	);
	return (
		<Form
			onSubmit={async (values) => {
				await showToast({
					title: "Form submitted",
					variant: "success",
					text: JSON.stringify(values),
				});
			}}
		>
			<TextInput label="First name" name="firstName" />
			<TextInput label="Last name" name="lastName" />
			<SubmitButton label="Submit" />
		</Form>
	);
}

Props

onSubmit
(values) => void | Promise<void>
required
What to do with the form values on submit. Typically you will call a server function.In TypeScript, the values will be strongly typed to match your form schema.
children
React.ReactNode
required
The contents of your form, usually layout and input components.
A form must contain one – and only one<SubmitButton /> as a direct child.