Dropdown Menu
Used to display a list of options to the user.
dropdown-menu-demo.tsx
"use client"
import { useState } from "react"
import {
PauseIcon,
PlayIcon,
SkipBackIcon,
SkipForwardIcon,
} from "lucide-react"
import { Button } from "@/components/ui/button"
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
export function DropdownDemo() {
const [shuffle, setShuffle] = useState(false)
const [repeat, setRepeat] = useState(false)
const [sortBy, setSortBy] = useState("artist")
return (
<DropdownMenu>
<DropdownMenuTrigger
render={(props) => <Button {...props}>Controls</Button>}
/>
<DropdownMenuContent>
<DropdownMenuGroup>
<DropdownMenuLabel>Playback</DropdownMenuLabel>
<DropdownMenuItem>
<PlayIcon />
Play
<DropdownMenuShortcut>⌘P</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
<PauseIcon />
Pause
<DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
<SkipBackIcon />
Previous
<DropdownMenuShortcut>⌘[</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
<SkipForwardIcon />
Next
<DropdownMenuShortcut>⌘]</DropdownMenuShortcut>
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuCheckboxItem
checked={shuffle}
onCheckedChange={setShuffle}
>
Shuffle
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem checked={repeat} onCheckedChange={setRepeat}>
Repeat
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem disabled>
Enhanced Audio
</DropdownMenuCheckboxItem>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuLabel>Sort by</DropdownMenuLabel>
<DropdownMenuRadioGroup value={sortBy} onValueChange={setSortBy}>
<DropdownMenuRadioItem value="artist">Artist</DropdownMenuRadioItem>
<DropdownMenuRadioItem value="album">Repeat</DropdownMenuRadioItem>
<DropdownMenuRadioItem value="title">Title</DropdownMenuRadioItem>
</DropdownMenuRadioGroup>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuSub>
<DropdownMenuSubTrigger>Add to Playlist</DropdownMenuSubTrigger>
<DropdownMenuSubContent>
<DropdownMenuItem>Jazz</DropdownMenuItem>
<DropdownMenuItem>Rock</DropdownMenuItem>
<DropdownMenuItem>Pop</DropdownMenuItem>
</DropdownMenuSubContent>
</DropdownMenuSub>
</DropdownMenuContent>
</DropdownMenu>
)
}
Installation
npx shadcn@latest add https://9ui.dev/r/dropdown-menu.json
Usage
Imports
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuGroupLabel,
DropdownMenuItem,
DropdownMenuItemShortcut,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown"
Anatomy
<DropdownMenu>
<DropdownMenuTrigger />
<DropdownMenuContent>
<DropdownMenuGroup>
<DropdownMenuGroupLabel />
<DropdownMenuItem>
<DropdownMenuItemShortcut />
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuCheckboxItem />
<DropdownMenuRadioGroup>
<DropdownMenuRadioItem />
</DropdownMenuRadioGroup>
<DropdownMenuSub>
<DropdownMenuSubTrigger />
<DropdownMenuSubContent>
<DropdownMenuItem />
</DropdownMenuSubContent>
</DropdownMenuSub>
</DropdownMenuContent>
</DropdownMenu>