Clidey UXDocs

MultiSearchSelect

A multi-select combobox that combines a Popover trigger with a searchable Command list. Supports selecting multiple values, a "Select All" toggle, and icon-labeled options.

Interactive example#

Multi Search Select · Live example

name, status

Search the options, toggle multiple values, or select all columns.

The code uses shared demo presentation helpers. Their complete source and styling are included in the LLM build context.

Usage#

TSX

import { MultiSearchSelect } from '@clidey/ux';

function FrameworkPicker() {
  const [selected, setSelected] = useState<string[]>([]);

  return (
    <MultiSearchSelect
      options={[
        { value: 'react', label: 'React' },
        { value: 'vue', label: 'Vue' },
        { value: 'svelte', label: 'Svelte' },
      ]}
      value={selected}
      onValueChange={setSelected}
      placeholder="Select frameworks..."
    />
  );
}

Props#

PropTypeDefaultDescription
optionsMultiSearchSelectOption[]—Required. Array of selectable options
valuestring[]—Controlled selected values
defaultValuestring[][]Initial values (uncontrolled)
onValueChange(value: string[]) => void—Callback when selection changes
selectedstring[]—Alias for value (legacy compatibility)
onChange(selected: string[]) => void—Alias for onValueChange (legacy compatibility)
placeholderstring"Select..."Trigger button text when empty
searchPlaceholderstring"Search..."Search input placeholder
notFoundMessagestring"No results found."Empty search message
selectAllLabelstring"Select all"Label for the select-all item
showSelectAllbooleantrueShow select-all toggle
disabledbooleanfalseDisable the component
classNamestring—Class applied to the trigger button
side"top" | "bottom" | "left" | "right""bottom"Popover placement
align"start" | "center" | "end""start"Popover alignment

MultiSearchSelectOption

PropertyTypeDescription
valuestringUnique identifier
labelstringDisplay text
iconReactNodeOptional leading icon

Examples#

With icons

TSX

<MultiSearchSelect
  options={[
    { value: 'desktop', label: 'Desktop', icon: <Laptop className="size-4" /> },
    { value: 'mobile', label: 'Mobile', icon: <Smartphone className="size-4" /> },
  ]}
  value={devices}
  onValueChange={setDevices}
/>

Without select-all

TSX

<MultiSearchSelect options={options} showSelectAll={false} />

Was this page helpful?