
### dataHook
- type: string
- description: Applies a data-hook HTML attribute that can be used in the tests.
### items
- type: NestableItemProps[]
- description: Sets the items of the list. Every item needs an `id`.
- default: []
### readOnly
- type: boolean
- description: Disables dragging for every item in the list.
### isRenderDraggingChildren
- type: boolean
- description: Renders the dragged item's children alongside it in the drag layer.
- default: false
### childrenProperty
- type: string
- description: Sets the property on each item that holds its array of children.
- default: 'children'
### childrenStyle
- type: CSSProperties
- description: Sets inline styles on the container that wraps nested children.
- default: {}
### onUpdate
- type: (data: { items: object[]; item: object; }) => void
- description: Called with the new array of items whenever an item is dropped in a new location.
### useDragHandle
- type: boolean
- description: Passes `connectDragSource` to `renderItem`, so a handle inside the item becomes the drag trigger instead of the whole item.
- default: false
### maxDepth
- type: number
- description: Sets the deepest nesting level an item can be dropped into.
- default: Infinity
### threshold
- type: number
- description: Sets the distance in pixels the cursor must move horizontally before an item changes depth.
- default: 30
### onDragStart
- type: (itemProps: any) => void
- description: Called with the item's props when dragging starts.
### onDragEnd
- type: (itemProps: any) => void
- description: Called with the item's props when dragging ends.
### renderItem
- type: (data: IRenderData) => ReactNode
- description: Renders the content of each item. Receives the item, its depth, its siblings, whether it is currently a placeholder or a drag preview, and `connectDragSource` when `useDragHandle` is set.
### renderAction
- type: (data: IRenderData) => ReactNode
- description: Renders an action element after the item, such as an add button.
- default: () => null
### renderPrefix
- type: (data: IRenderData) => ReactNode
- description: Renders an element before the item content, inside the item row.
- default: () => null
### zIndex
- type: number
- description: Sets the z-index of the draggable layer. Takes precedence over `dragLayerZIndex`.
### dragLayerZIndex
- type: number
- description: Defines the zIndex of the draggable layer.
### preventChangeDepth
- type: boolean
- description: Allows dragging and dropping an item only on its own depth.
### preventChangeParent
- type: boolean
- description: Allows dragging and dropping an item only on its own parent.
### enforcePinnedOrder
- type: boolean
- description: Allows dragging and dropping an item only on its pin section.
### canDrop
- type: (dragItem: NestableItemProps, hoverItem: NestableItemProps) => boolean
- description: Returns `false` to reject a drop while the cursor hovers over `hoverItem`.
Runs after the built-in constraint flags (`preventChangeDepth`, `preventChangeParent`,
`enforcePinnedOrder`). When it returns `false`, no placeholder is shown, the drop
is rejected at hover time — matching the behavior of the built-in flags — and a
`not-allowed` cursor is shown over the rejected target.
### virtualized
- type: boolean
- description: Allows windowed rendering of large lists. Requires `itemHeight` and `viewportHeight`.
- default: false
### itemHeight
- type: number
- description: Sets the fixed row height in pixels. Required when `virtualized` is `true`.
### viewportHeight
- type: number
- description: Sets the scroll viewport height in pixels. Required when `virtualized` is `true`.
### offscreenRowCount
- type: number
- description: Sets the number of extra rows to render above and below the visible window.
- default: 5
### pinnedItemId
- type: string | number
- description: Sets the id of an item to keep mounted in the window even when scrolled offscreen (e.g., to preserve keyboard focus).

