Content
Container for options; renders as portal with Popper positioning
| Prop | Type | Default |
|---|---|---|
| asChild# | booleanRender as child element instead of div | — |
| className# | stringCSS class names to apply | — |
| forceMount# | booleanForce mount the content even when closed | — |
| position# | 'item-aligned' | 'popper'Positioning strategy | 'popper' |
| side# | 'top' | 'right' | 'bottom' | 'left'Preferred side for popper positioning | 'bottom' |
| sideOffset# | numberDistance from trigger when using popper | 4 |
| align# | 'start' | 'center' | 'end'Alignment relative to trigger | 'start' |
| alignOffset# | numberFine-tune alignment distance | — |
| avoidCollisions# | booleanReposition to avoid viewport collisions | true |
| collisionPadding# | numberSpace to maintain from viewport edges | — |
| onCloseAutoFocus# | (event: Event) => voidCallback when content closes; focus normally returns to trigger | — |
| onEscapeKeyDown# | (event: KeyboardEvent) => voidCallback when Escape key pressed | — |
| onPointerDownOutside# | (event: Event) => voidCallback when pointer down outside content | — |
| children# | React.ReactNodeOption items (Item, Group, etc.) or custom content | — |
| options# | MultiSelectOption[]Array of options to virtualize; auto-renders with Options component (styled only) | — |
| optionHeight# | numberHeight of each virtualized option in pixels (styled only) | 36 |
| optionOverscan# | numberExtra items to render outside viewport (styled only) | 6 |
| optionEmptyMessage# | React.ReactNodeMessage shown when no options match search (styled only) | — |
| renderOption# | (option: MultiSelectOption) => React.ReactNodeCustom render function for each option (styled only) | — |
| showCreateItem# | booleanShow create option item; requires Root onCreateOption (styled only) | true |