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

# fields.chapters()

Repeatable nested-content list, each item shaped by a content template.

Repeatable nested-content list. Maps to editor `{ name: 'str-chapters', type: 'chapters' }`. Each item is itself shaped by one of the content templates named in `allow`.

## Example

```ts
fields.chapters({
  label: 'Sections',
  allow: ['hero', 'text-block', 'gallery'],
  size: 20,
})
```

## Options

| Option         | Type             | Required | Description                                                                                                                                              |
| -------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `label`        | `string`         | Yes      | Label shown to editors in Strife Studio.                                                                                                                 |
| `description`  | `string`         | No       | Tooltip shown to editors.                                                                                                                                |
| `localizable`  | `boolean`        | No       | When `true`, output is `Record<string, unknown[]>` — one chapter list per locale. Real Strife templates use this for locale-specific aside sections etc. |
| `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.                                                                                                                       |
| `allow`        | `string[]`       | No       | Allowed content-template names (`type: 'content'`) for items. Omit to allow any.                                                                         |
| `hint`         | `string \| null` | No       | Display hint shown above the chapters list in the editor.                                                                                                |
| `size`         | `number \| null` | No       | Maximum number of items.                                                                                                                                 |

> [!NOTE]
> **v1 limitation:** the output type is `unknown[]` (or `Record<string, unknown[]>` when localizable) regardless of what's in `allow`. Recursive type inference — resolving each chapter item to its own template's generated interface — isn't implemented yet; cast the array to the expected item shape after `Infer<>` if you need it typed.

## Output type

`unknown[]`, or `Record<string, unknown[]>` when `localizable: true`.

## See also

* [Chapters](https://strife.app/docs/reference/fields/chapters.md) — the same editor, documented from the Strife Studio UI side.
* [`fields.contentTemplate()`](https://strife.app/docs/reference/field-reference/fields.contenttemplate.md) — embeds a single content template inline instead of a repeatable list.
