Built-in field types
Every built-in field type. Every field also takes name, label, description, placeholder, default, required, rules and ui. A type of kind none takes no default, required or rules, and a group takes no required or default. The field types guide explains each one.
| Type | Kind | Props | Default rules | Description |
|---|---|---|---|---|
text | string | One line of text | ||
textarea | string | Several lines of text | ||
email | string | email | An email address, checked by the email rule | |
password | string | Text hidden while typing | ||
url | string | url | A web address, checked by the url rule | |
tel | string | A phone number. Add a regex rule for its format | ||
number | number | |||
checkbox | boolean | Yes or no. Required means it must be ticked | ||
date | date | output?: "string" | "date" | An ISO date, such as 2026-10-28 | |
time | date | An ISO time, such as 14:30 | ||
datetime | date | output?: "string" | "date" | A local ISO date and time, such as 2026-10-28T14:30 | |
select | from the props | options?: object[], at least 1; valueType?: "string" | "number" | One of the options, or any value while they load | |
radio | from the props | options: object[], at least 1 | One of the options | |
multiselect | array, items from the props | options: object[], at least 1 | Any number of the options | |
file | from the props | multiple?: boolean; accept?: string | A file, or a list of files with multiple | |
heading | none | text: string; level?: integer, 1 to 6 | A title between fields. It has no value | |
paragraph | none | text: string | Plain text between fields. It has no value | |
divider | none | A line between fields. It has no value | ||
group | object | fields: field[] | An object with a key for each of its fields | |
array | array | of?: field; fields?: field[] | A list of single values with of, or of objects with fields |