> From the [Strife developer docs](https://strife.app/docs/reference/field-reference/fields.select). Every page is listed in [llms.txt](https://strife.app/docs/llms.txt).

# fields.select()

Single- or multi-select combo-box dropdown. Always stores an array of {value, name} objects.

Single- or multi-select dropdown. Maps to editor `{ name: 'str-combo-box', type: 'combo-box' }` — the underlying editor is a combo-box that supports both modes; the DSL surface is named `select` to match plan vocabulary.

The combo-box editor stores an **array** of `{ value, name }` objects — even a single selection is `[{ value, name }]`. `multiSelect` only changes how many items can be picked, never the stored shape.

## Example

```ts
fields.select({
  label: 'Status',
  options: [
    { name: 'Draft', value: 'draft' },
    { name: 'Published', value: 'published' },
  ] as const,
})
// _output: { value: 'draft' | 'published'; name: string }[]
```

## Options

| Option         | Type                                                                               | Required | Description                                                                                           |
| -------------- | ---------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `label`        | `string`                                                                           | Yes      | Label shown to editors in Strife Studio.                                                              |
| `options`      | `{ name: string; value: string; color?: string \| null; icon?: string \| null }[]` | Yes      | The selectable choices. Use `as const` (or rely on the generic) to narrow `value` to a literal union. |
| `description`  | `string`                                                                           | No       | Tooltip shown to editors.                                                                             |
| `searchable`   | `boolean`                                                                          | No       | Include in the team's search index.                                                                   |
| `filterable`   | `boolean`                                                                          | No       | Allow filtering content lists by this value.                                                          |
| `protected`    | `boolean`                                                                          | No       | Restrict editing to users with the appropriate permission.                                            |
| `propertyName` | `string`                                                                           | No       | Override the stored property name.                                                                    |
| `multiSelect`  | `boolean`                                                                          | No       | Allow selecting more than one option.                                                                 |
| `defaultValue` | one of `options[].value`                                                           | No       | Preselected value.                                                                                    |
| `placeholder`  | `string \| null`                                                                   | No       | Placeholder text for the search field.                                                                |
| `icon`         | `string \| null`                                                                   | No       | Icon shown before the selected value.                                                                 |

> [!NOTE]
> The Studio-UI Combo Box editor also has an "External source" option (fetch options from an external URL). `fields.select()` doesn't expose this yet — `options` must be a literal array today.

No `localizable` option.

## Output type

`{ value: string; name: string }[]` — `value` narrowed to the literal union of `options[].value` when declared `as const`.

## See also

* [Combo Box](https://strife.app/docs/reference/fields/combo-box.md) — the same editor, documented from the Strife Studio UI side.
* [`fields.multiSelect()`](https://strife.app/docs/reference/field-reference/fields.multiselect.md) — a _different_ editor that stores just the selected `value`s, not `{value, name}` objects.
