# createKanban API

> Auto-generated API reference for `createKanban` from @vuetify/v0 (Vuetify0).
> Source of truth: https://0.vuetifyjs.com/api/create-kanban

## Related

- https://0.vuetifyjs.com/composables/data/create-kanban
- https://0.vuetifyjs.com/composables/data/create-sortable
- https://0.vuetifyjs.com/composables/system/use-drag-drop
- https://0.vuetifyjs.com/composables/registration/create-registry

## Functions

### createKanban

Create a headless two-level sortable orchestrator.

```ts
(_options?: KanbanOptions) => KanbanContext<ItemZ, ColZ>
```

## Options

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `reactive` | `boolean \| undefined` | `false` | no | Enable reactive behavior for registry operations |
| `disabled` | `MaybeRefOrGetter<boolean> \| undefined` | `false` | no | Disabled state for the entire model instance |
| `enroll` | `MaybeRefOrGetter<boolean> \| undefined` | `true` | no | Auto-select tickets on registration |
| `multiple` | `MaybeRefOrGetter<boolean> \| undefined` | `false` | no | Allow multiple tickets to be selected simultaneously |

## Methods

| Name | Type | Description |
|---|---|---|
| `transfer` | `(id: ID, toColumnId: ID, toIndex: number) => SortableTicket<ItemZ> \| undefined` | Move an item across columns. Same-column transfer (where `toColumnId` matches the item's current column) collapses to `column.items.move` and does not emit `transfer:ticket`.  Returns the moved ticket, or `undefined` when gated (kanban / source / destination / item disabled, destination.accept rejected, unknown id, duplicate destination id). |
| `dispose` | `() => void` | Tear down the entire board: every column's inner `items` sortable, the internal id → column lookup, the `transfer:ticket` event bus, and the columns registry itself. `kanban.columns.dispose` is the same function. Repeatable — a later call after `columns.register` tears down the rebuilt board the same way. |

## Properties

| Name | Type | Description |
|---|---|---|
| `columns` | `SortableContext<ColZ, KanbanColumnTicket<ItemZ, ColZ>>` | Column registry. Use this for column register / unregister / move / swap / reorder. |
| `on` | `KanbanEventListener<ItemZ>` | Subscribe to the kanban-level `transfer:ticket` event, fired after each successful cross-column move. Registry events (`register:ticket`, `unregister:ticket`, `move:ticket`) live on the columns registry — use `kanban.columns.on(...)` for those, or `column.items.on(...)` for per-column intra-column reorder events. |
| `off` | `KanbanEventListener<ItemZ>` | Unsubscribe from the `transfer:ticket` event. Must be called with the same callback reference used to subscribe. |
