
# Text Fields

Six field types store textual content, from short labels to formatted rich text and validated strings. All share the [base field properties](/en/docs/tables-overview#base-field-properties).

| Type               | Stores                                                           |
| ------------------ | ---------------------------------------------------------------- |
| `single-line-text` | Short, single-line text (names, titles, labels).                 |
| `long-text`        | Multi-line plain text (descriptions, notes, comments).           |
| `rich-text`        | Formatted HTML rendered with a WYSIWYG editor.                   |
| `email`            | Email address validated against RFC 5322.                        |
| `url`              | Web address validated as an absolute URL.                        |
| `phone-number`     | Phone number stored as text; preserves international formatting. |

## `single-line-text`

Short text limited to a single line. Stored as-is without formatting.

| Property  | Description                             |
| --------- | --------------------------------------- |
| `default` | Default string assigned to new records. |

```yaml
- { id: 1, name: title, type: single-line-text, required: true, indexed: true, default: Untitled }
```

## `long-text`

Multi-line plain text. Supports line breaks; no rich formatting (no bold/italics).

| Property  | Description                             |
| --------- | --------------------------------------- |
| `default` | Default string assigned to new records. |

```yaml
- { id: 2, name: description, type: long-text, default: 'Enter description here...' }
```

## `rich-text`

Formatted text with bold, italic, links, lists, headings, and more. Rendered with a Tiptap WYSIWYG editor and stored as HTML.

| Property         | Description                                                                                                                                                   |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `maxLength`      | Maximum length in characters (integer ≥ 1). Validates on input.                                                                                               |
| `fullTextSearch` | Boolean. Enables full-text-search indexing for this field.                                                                                                    |
| `toolbar`        | Array of allowed toolbar actions (e.g. `bold`, `italic`, `link`, `heading`, `list`, `image`, `code-block`, `table`). When omitted, all actions are available. |
| `placeholder`    | Placeholder text shown when the editor is empty.                                                                                                              |
| `collaborative`  | Boolean. Enables real-time collaborative editing (Yjs).                                                                                                       |

```yaml
- id: 3
  name: article_content
  type: rich-text
  required: true
  maxLength: 10000
  toolbar: [bold, italic, link, heading, list]
  placeholder: 'Write your article...'
```

## `email`

Text field that validates email addresses (RFC 5322). Commonly `unique: true` and `indexed: true` for authentication and lookups.

| Property  | Description                                    |
| --------- | ---------------------------------------------- |
| `default` | Default email address assigned to new records. |

```yaml
- { id: 4, name: email, type: email, required: true, unique: true, indexed: true }
```

## `url`

Text field that validates web addresses. Supports multiple protocols (`http://`, `https://`, `ftp://`, …).

| Property  | Description                          |
| --------- | ------------------------------------ |
| `default` | Default URL assigned to new records. |

```yaml
- { id: 5, name: website, type: url, indexed: true, default: 'https://example.com' }
```

## `phone-number`

Text field for phone numbers. Numbers are stored exactly as entered (spaces, dashes, parentheses preserved); no automatic formatting is applied, allowing any international format.

| Property  | Description                                   |
| --------- | --------------------------------------------- |
| `default` | Default phone number assigned to new records. |

```yaml
- { id: 6, name: mobile_phone, type: phone-number, unique: true, default: '+1 (555) 000-0000' }
```

:::callout
**Full-text search & relevance.** Set `indexed: true` plus `searchWeight` (`A`–`D`) on text fields whose data source uses full-text search, to control relevance ranking. `rich-text` also exposes `fullTextSearch` to opt that column into the search index.
:::
