
# Selection Fields

Four field types let records choose from predefined options. All share the [base field properties](/en/docs/tables-overview#base-field-properties).

| Type            | Stores                                                              |
| --------------- | ------------------------------------------------------------------- |
| `checkbox`      | A boolean true/false value.                                         |
| `single-select` | One option chosen from a predefined list.                           |
| `multi-select`  | Multiple options chosen from a predefined list.                     |
| `status`        | A colored workflow state from a list of `{ value, color }` options. |

## `checkbox`

Boolean field, typically rendered as a checkbox.

| Property  | Description                               |
| --------- | ----------------------------------------- |
| `default` | Default boolean value (`true` / `false`). |

```yaml
- { id: 1, name: is_active, type: checkbox, required: true, default: false }
```

## `single-select`

A single choice from a list of string options.

| Property     | Description                                                                                                                                                        |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `options`    | Array of strings defining the available choices.                                                                                                                   |
| `default`    | Default selected option (a string).                                                                                                                                |
| `conditions` | Optional behavioral conditions: `[{ when: <option>, then: { …property changes } }]` — apply property changes (e.g. `readOnly`) when a specific option is selected. |

```yaml
- id: 2
  name: category
  type: single-select
  options: [Electronics, Clothing, Food]
  default: Electronics
```

## `multi-select`

Multiple choices from a list of string options.

| Property        | Description                                                              |
| --------------- | ------------------------------------------------------------------------ |
| `options`       | Array of strings defining the available choices.                         |
| `maxSelections` | Maximum number of choices (integer ≥ 1; cannot exceed `options.length`). |
| `default`       | Default selections (an array of strings).                                |

```yaml
- id: 3
  name: tags
  type: multi-select
  options: [Urgent, Important, Review]
  maxSelections: 3
```

## `status`

A colored workflow state. Each option is an object with a `value` and a `color`, ideal for Kanban columns and pipeline stages.

| Property  | Description                                                        |
| --------- | ------------------------------------------------------------------ |
| `options` | Array of `{ value, color }` objects defining the colored states.   |
| `default` | Default status value (a string matching one of the option values). |

```yaml
- id: 4
  name: status
  type: status
  options:
    - { value: todo, color: '#94A3B8' }
    - { value: in_progress, color: '#3B82F6' }
    - { value: done, color: '#10B981' }
  default: todo
```

:::callout
**Single-select vs status.** Use `single-select` for plain enumerated values (string `options`). Use `status` when each state needs a color for visual workflow displays such as Kanban boards.
:::
