Select

Custom dropdown with label, required, help icon, hint, error, in-menu search, supporting text and leading-element types, plus Multi-select — maps 1:1 to the Figma Select and Multi-select variants.

import{ Select, MultiSelect } from "@pepulux/ui"

Default — Type: Default

Plain select with label, required mark, help icon, and hint text.

This is a hint text to help user.

Icon leading — Type: Icon leading

Pass leadingIcon to show any icon before the placeholder/value.

This is a hint text to help user.

Avatar leading — Type: Avatar leading

Pass leadingAvatar to show a user avatar before the placeholder.

This is a hint text to help user.

Dot leading — Type: Dot leading

Pass leadingDot with a CSS color string. Options can also carry dot colors.

This is a hint text to help user.

Search — Type: Search

Search icon leading + optional keyboard shortcut badge on the right.

This is a hint text to help user.

Search and supporting text

searchable adds a filter box inside the menu. Options can carry supportingText and an avatar.

  • OROlivia Rhye@olivia
  • PBPhoenix Baker@phoenix
  • LSLana Steiner@lana
  • DWDemi Wilkinson@demi

Multi-select

Checkbox menu, selected options shown as removable tags with a +N overflow counter.

This is a hint text to help user.

Select at least one department.

Sizes

sm (36px) · md (40px, default) · lg (44px)

States

Placeholder → Filled → Error → Disabled

Please select a department.

Disabled options

Set disabled on individual options to prevent selection.

Props

PropTypeDefaultDescription
options*SelectOption[]—{ value, label, icon?, avatar?, dot?, supportingText?, disabled? }
valuestring—Controlled selected value.
defaultValuestring—Uncontrolled initial value.
onChange(value: string) => void—Called when selection changes.
placeholderstring"Select option"Placeholder text when nothing is selected.
size"sm" | "md" | "lg""md"Trigger height.
labelstring—Label above the select.
requiredbooleanfalseShows purple asterisk after label.
helpTextstring—Tooltip text on the help-circle icon.
hintstring—Hint text below the select.
errorbooleanfalseSets error border + ring.
errorTextstring—Error message replaces hint.
disabledbooleanfalseDisables all interaction.
leadingIconReactNode—Icon on the left of the trigger (Figma: Icon leading).
leadingAvatarReactNode—Avatar element on the left (Figma: Avatar leading).
leadingDotstring—CSS color for a dot indicator on the left (Figma: Dot leading).
searchablebooleanfalseFilter box inside the menu (Figma Type: Search).
destructivebooleanfalseFigma Destructive — alias for error.
defaultOpenbooleanfalseStart with the menu open (Figma State: Open).
values (MultiSelect)string[]—MultiSelect uses value / defaultValue / onChange with string[]; maxVisibleTags controls the +N overflow.
shortcutstring—Keyboard shortcut badge on the right e.g. "⌘K" (Figma: Search type).
Base component → Selectwww.pepulux.com

Notes and documentation

Space for notes, documentation, and best practices for using these components.

Choose from a defined list

Use Select for five or more options, Radio for fewer. Search helps with long lists, and Multi-select shows each choice as a removable tag.

Supporting text and avatars make people and account lists easier to scan.

Do

  • Provide a clear placeholder
  • Sort options logically or alphabetically

Don't

  • Hide required options behind a scroll without search