Installation
npx shadcn@latest add @iconiq/r-selectProps
Select
Animated compound single-select with the same Iconiq trigger, row, and panel motion layered over Radix UI primitives.
valuestringdefaultValuestringonValueChange(value: string) => voidopenbooleandefaultOpenbooleanDefault false
onOpenChange(open: boolean) => voidThe root wraps the provider primitive in the Iconiq motion layer so child parts share one animation setup.
Selection and open state can be controlled or uncontrolled while still preserving primitive keyboard navigation and typeahead.
SelectTrigger
Button that opens the menu and hosts SelectValue plus the animated chevron.
childrenReactNodesize"sm" | "default"Default "default"
classNamestringThe trigger keeps the previous press spring, hover color, focus ring, and chevron rotation.
SelectValue
Inline label for the current selection, with placeholder support from the underlying primitive.
placeholderReactNodeclassNamestringSelectContent
Portaled menu surface with the previous Iconiq dropdown fade, slide, and viewport clamping.
side"top" | "right" | "bottom" | "left"Default "bottom"
align"start" | "center" | "end"Default "start"
sideOffsetnumberDefault 8
classNamestringUses Radix Select root, trigger, portal, content, viewport, group, label, and item primitives for focus management, typeahead, and placement.
The visible trigger press, chevron rotation, panel fade/slide, active-row highlight, and checkmark motion match the core Iconiq select component.
The popup is portaled, width-matches the trigger by default, and caps height at 320px before scrolling.
Scroll up/down arrow slots are included for long menus while the panel keeps the same entry and exit animation.
SelectItem
Selectable row with primitive keyboard behavior plus the previous active-row highlight and checkmark motion.
valuestringRequired
childrenReactNodeRequired
iconReactNodedisabledbooleanDefault false
classNamestringSelectGroup
Section wrapper for grouped options inside SelectContent.
childrenReactNodeRequired
classNamestringSelectGroup adds the same section spacing as the previous grouped option renderer.
SelectLabel
Compact section label rendered above grouped SelectItem rows.
childrenReactNodeRequired
classNamestringSelectLabel keeps the compact uppercase section label treatment.
SelectSeparator
Non-interactive divider between item clusters inside the menu.
classNamestringSelectSeparator renders a non-interactive border-token divider between item clusters.
SelectScrollUpButton
Scroll affordance rendered above long SelectContent lists.
classNamestringSelectScrollDownButton
Scroll affordance rendered below long SelectContent lists.
classNamestringRegistry bundle
Install the exact registry entry shown on the right when you want the component file and its declared runtime dependencies together.
Dependencies: @radix-ui/react-select, motion, lucide-react.
Installs compound Radix select parts with the same exported part names as the Base UI version.
Keeps grouped sections, trigger width matching, keyboard typeahead, and the same trigger and dropdown motion as the prior select component.
The generated registry file is /r/r-select.json.