An accessible dropdown menu component built on Base UI with smooth Motion spring scale and submenu slide animations.
Made by AxylAn animated dropdown menu with spring entrance transitions, nested submenus, checkable items, radio items, shortcuts, and destructive styling.
Installation
File Structure
Usage
RTL
The same dropdown menu pattern rendered right-to-left with Base UI DirectionProvider.
Use Base UI's DirectionProvider together with dir="rtl" on the demo
container to render the menu from right to left. The provider keeps popup
positioning and keyboard navigation aware of the text direction.
Props
DropdownMenu
| Prop | Type | Default |
|---|---|---|
open? | boolean | - |
defaultOpen? | boolean | false |
onOpenChange? | (open: boolean) => void | - |
DropdownMenuContent
| Prop | Type | Default |
|---|---|---|
align? | "start" | "center" | "end" | "start" |
alignOffset? | number | 0 |
side? | "top" | "right" | "bottom" | "left" | "inline-start" | "inline-end" | "bottom" |
sideOffset? | number | 4 |
disableAnimation? | boolean | false |
positionerClassName? | string | - |
DropdownMenuItem
| Prop | Type | Default |
|---|---|---|
disabled? | boolean | false |
inset? | boolean | false |
variant? | "default" | "destructive" | "default" |
DropdownMenuCheckboxItem
| Prop | Type | Default |
|---|---|---|
checked? | boolean | - |
onCheckedChange? | (checked: boolean) => void | - |
disabled? | boolean | false |
inset? | boolean | false |
DropdownMenuRadioItem
| Prop | Type | Default |
|---|---|---|
value? | string | - |
disabled? | boolean | false |
inset? | boolean | false |
DropdownMenuSubTrigger
| Prop | Type | Default |
|---|---|---|
disabled? | boolean | false |
inset? | boolean | false |
DropdownMenuSubContent
| Prop | Type | Default |
|---|---|---|
align? | "start" | "center" | "end" | "start" |
alignOffset? | number | -4 |
side? | "top" | "right" | "bottom" | "left" | "inline-start" | "inline-end" | "right" |
sideOffset? | number | 0 |
disableAnimation? | boolean | false |
Built by Axyl. A motion-first component registry for React.
Last updated: 9/11/2026