Selecting a value from a dropdown list of options.
isSearchable) for lists longer than 10 items, where scrolling impedes the experience.withVirtualizer) alongside search for large lists to prevent performance issues.label. When a visible label isn't possible, provide ariaLabel or ariaLabelledby.description to a disabled option explaining why it's unavailable and what would make it selectable.isMulti) — one or more selections, displayed as removable tags in the trigger.isSearchable) — adds a search input inside the dropdown for filtering options.withCreate with isSearchable) — lets users create an option when the typed input doesn't match an existing one. Use for tags or custom attributes the user manages themselves.size="md") — the default size for most use cases.size="sm") — for compact layouts, smaller viewports, and less prominent lists.icon on an option) — use to give visual context such as categories or user avatars.description on an option) — add when the label alone doesn't convey the option's purpose. Keep them concise.isDisabled) — blocks all interaction and applies disabled field and text styling.isLoading) — shows a spinner indicating options are being loaded.isInvalid with error) — applies danger styling and renders error text below the field.isClearable) — resets the field to its empty state after a selection. Use for optional Selects.isCollapsible on a group) — let users expand and collapse sections. Use defaultIsCollapsed to start a group collapsed.tooltip on an option) — surface extra detail on hover or focus when inline descriptions are unwanted.description or tooltip when more context is needed.searchPlaceholder when search is enabled. Prefix examples with e.g.options as an array of { value, label } objects. Options also accept description, icon, tooltip, tooltipPlacement, withTruncatedTooltip, isDisabled, searchLabel, elementBefore, and elementAfter.{ label: 'Group name', options: [...] }. Groups accept isCollapsible, defaultIsCollapsed, icon, isDisabled, tooltip, and withTruncatedTooltip, and can nest further.value is a string or an option object and onChange receives string | null. Multi-select value is an array of either and onChange receives string[] | null.isClearable calls onChange(null) when cleared — there is no separate onClear callback.withCreate only applies when isSearchable is true. Selecting the create option calls onCreate(value) and not onChange, so update both options and value inside onCreate. Customize the create row with createOptionLabel and gate it with canCreateNewOption.canWrap only applies when isMulti is true.withTruncatedTooltip on the Select applies to all options and group headers, and is overridable per option or group. With a custom optionComponent, forward the labelRef prop to the element that may truncate so detection works.label, description, and error (rendered below the field, with error replacing description); iconComponent, which replaces the default option icon area; optionComponent, which replaces the option row; valueComponent, which replaces the selected value in the trigger; headerComponent (above the search input), beforeOptionsComponent (below the search input, above the list), and footerComponent (below the list).icon prop renders a fixed Pluma icon at the left of the trigger; option-level icon fields change with each option.elementBefore renders in the trigger's leading slot after any icon and before the selected value; elementAfter renders in the trailing slot after the clear button and before the chevron.unsafe_leftSectionComponent is deprecated. Use elementBefore instead — it takes the same content in the same position.size values "medium" and "small" are deprecated. Use "md" and "sm".isOpen, defaultIsOpen, and onOpenChange; onOpen and onCloseComplete fire on open and after the close animation. onActiveChange reports the highlighted option.onLoadMore with shouldLoadMore and isLoadingMore for paginated or infinite-scroll option loading.searchInputValue with onSearchInput to control filtering externally — the component stops filtering on its own when these are provided. searchAriaLabel labels the search input (default "Search").unsafe_popoverClassName, unsafe_popoverStyle, and unsafe_popoverSize customize the floating dropdown element. middlewareOptions and additionalMiddleware customize Floating UI positioning. unsafe_initialSearchValue pre-fills the search input for snapshots and tests only.ReactNode directly for label, description, error, elementBefore, and elementAfter; the *Component props take components.<PlumaSelect> with @argName args, plus the :label, :description, :error, :elementBefore, and :elementAfter named blocks for rich content. Option-level elementBefore/elementAfter are components in Ember, since options are plain data rather than blocks.