# Rokkit MultiSelect Component > Dropdown component for selecting multiple items with pill/tag display. MultiSelect extends Select for multi-item selection. Selected values are shown as removable pills inside the trigger. Supports grouping, typeahead filtering, and field mapping. ## Quick Start ```svelte

Selected: {value.join(', ')}

``` ## Object Options ```svelte ``` ## Props | Prop | Type | Default | Description | |------|------|---------|-------------| | `options` | `SelectItem[]` | `[]` | Options array | | `fields` | `SelectFields` | defaults | Field mapping | | `value` | `unknown[]` | `[]` | Selected values array — use `bind:value` | | `selected` | `SelectItem[]` | `[]` | Selected items — use `bind:selected` | | `placeholder` | `string` | — | Placeholder when nothing selected | | `size` | `'sm'|'md'|'lg'` | `'md'` | Size variant | | `align` | `'left'|'right'|'start'|'end'` | `'left'` | Dropdown alignment | | `direction` | `'up'|'down'` | `'down'` | Dropdown direction | | `maxRows` | `number` | `5` | Visible rows in dropdown | | `maxDisplay` | `number` | — | Max pills shown before "+N more" | | `disabled` | `boolean` | `false` | Disable the component | | `filterable` | `boolean` | `false` | Show typeahead filter input | | `filterPlaceholder` | `string` | — | Placeholder for filter input | | `icons` | `SelectStateIcons` | — | Override state icons | | `class` | `string` | `''` | Additional CSS classes | ## Field Mapping Same as [Select](/llms/components/select.txt) — uses `SelectFields`: | Field | Default | |-------|---------| | `value` | `'value'` | | `text` | `'text'` | | `icon` | `'icon'` | | `description` | `'description'` | | `disabled` | `'disabled'` | | `children` | `'children'` | ## Callbacks | Callback | Signature | Description | |----------|-----------|-------------| | `onchange` | `(values[], items[]) => void` | Selection changed | ## Max Display Collapse excess pills to a "+N more" indicator: ```svelte ``` ## Snippets ### Custom Selected Values Display ```svelte {#snippet selectedValues(items, fields)} {items.length} selected {/snippet} ``` ## Keyboard Navigation Same as Select: | Key | Action | |-----|--------| | `Enter/Space` | Open dropdown | | `ArrowDown/Up` | Navigate options | | `Enter` | Toggle focused option | | `Escape` | Close dropdown | | `Backspace` | Remove last selected pill | ## Data Attributes | Attribute | Description | |-----------|-------------| | `data-multiselect` | Root element | | `data-select-trigger` | Trigger area | | `data-select-pill` | Selected value pill | | `data-select-dropdown` | Dropdown container | | `data-open` | Open state | ## Import ```javascript import { MultiSelect } from '@rokkit/ui' ``` ## TypeScript Types ```typescript interface MultiSelectProps { options?: SelectItem[] fields?: SelectFields value?: unknown[] selected?: SelectItem[] placeholder?: string size?: 'sm' | 'md' | 'lg' align?: 'left' | 'right' | 'start' | 'end' direction?: 'up' | 'down' maxRows?: number maxDisplay?: number disabled?: boolean filterable?: boolean filterPlaceholder?: string icons?: SelectStateIcons class?: string onchange?: (values: unknown[], items: SelectItem[]) => void selectedValues?: Snippet<[SelectItem[], SelectFields]> item?: Snippet<[SelectItem, SelectFields, SelectItemHandlers, boolean]> groupLabel?: Snippet<[SelectItem, SelectFields]> } ``` ## Related Components - [Select](/llms/components/select.txt) — single-item dropdown - [List](/llms/components/list.txt) — inline multi-selection - [Toggle](/llms/components/toggle.txt) — compact option group