# Form

A titled form shell: a fields slot, an error line and a submit button that fires onSubmit.

## Add it to an app

1. Open the app builder and find **Form** in the component palette.
2. Insert it into the intended region or container.
3. Set its properties in the inspector. Use a literal for a fixed value or a binding for a value supplied by the app.
4. Connect its events where the app should respond to a user gesture.
5. Preview with representative data and save after resolving validation problems.

The type name in the builder’s code view is `form`.

## Settings

| Setting | Accepted value | Required | Default | What it controls |
| --- | --- | --- | --- | --- |
| busy (`busy`) | boolean | No | false | — |
| description (`description`) | string | No | "" | — |
| error (`error`) | string | No | "" | — |
| submitLabel (`submitLabel`) | string | No | "Submit" | — |
| title (`title`) | string | No | "" | — |

## Values available to bindings

This component declares no published values. Use its settings and any events to configure its behaviour.

## Events

- `onSubmit` — Available to connect to an action in the event editor.

Connect only the actions the app needs. An event can fetch results, run an enabled data source, set state, update another component, show a notification, or navigate where supported.

## Example: A starting configuration

| Setting | Example value |
| --- | --- |
| `description` | "They receive an email with a join link." |
| `submitLabel` | "Send invite" |
| `title` | "Invite a teammate" |

## If it is empty or unavailable

Check the source binding, the selected item, and the app’s access. A hosted document, table, review, or storage component needs the corresponding app capability; an offline preview cannot supply live private data. A source running with no results is different from an invalid binding. Inspect the app’s workflow and data source before changing the presentation.
