Dropdown

Used to display a list of options to the user.

dropdown-demo.tsx
"use client"
 
import { useState } from "react"
import {
	PauseIcon,
	PlayIcon,
	SkipBackIcon,
	SkipForwardIcon,
} from "lucide-react"
 
import { Button } from "@/components/ui/button"
import {
	Dropdown,
	DropdownCheckboxItem,
	DropdownContent,
	DropdownGroup,
	DropdownGroupLabel,
	DropdownItem,
	DropdownItemShortcut,
	DropdownRadioGroup,
	DropdownRadioItem,
	DropdownSeparator,
	DropdownSubTrigger,
	DropdownTrigger,
} from "@/components/ui/dropdown"
 
export function DropdownDemo() {
	const [shuffle, setShuffle] = useState(false)
	const [repeat, setRepeat] = useState(false)
	const [sortBy, setSortBy] = useState("artist")
 
	return (
		<Dropdown>
			<DropdownTrigger
				render={(props) => <Button {...props}>Controls</Button>}
			/>
			<DropdownContent>
				<DropdownGroup>
					<DropdownGroupLabel>Playback</DropdownGroupLabel>
					<DropdownItem>
						<PlayIcon />
						Play
						<DropdownItemShortcut>⌘P</DropdownItemShortcut>
					</DropdownItem>
					<DropdownItem>
						<PauseIcon />
						Pause
						<DropdownItemShortcut>⇧⌘P</DropdownItemShortcut>
					</DropdownItem>
					<DropdownItem>
						<SkipBackIcon />
						Previous
						<DropdownItemShortcut>⌘[</DropdownItemShortcut>
					</DropdownItem>
					<DropdownItem>
						<SkipForwardIcon />
						Next
						<DropdownItemShortcut>⌘]</DropdownItemShortcut>
					</DropdownItem>
				</DropdownGroup>
				<DropdownSeparator />
				<DropdownCheckboxItem checked={shuffle} onCheckedChange={setShuffle}>
					Shuffle
				</DropdownCheckboxItem>
				<DropdownCheckboxItem checked={repeat} onCheckedChange={setRepeat}>
					Repeat
				</DropdownCheckboxItem>
				<DropdownCheckboxItem disabled>Enhanced Audio</DropdownCheckboxItem>
				<DropdownSeparator />
				<DropdownGroup>
					<DropdownGroupLabel>Sort by</DropdownGroupLabel>
					<DropdownRadioGroup value={sortBy} onValueChange={setSortBy}>
						<DropdownRadioItem value="artist">Artist</DropdownRadioItem>
						<DropdownRadioItem value="album">Repeat</DropdownRadioItem>
						<DropdownRadioItem value="title">Title</DropdownRadioItem>
					</DropdownRadioGroup>
				</DropdownGroup>
				<DropdownSeparator />
				<Dropdown>
					<DropdownSubTrigger>Add to Playlist</DropdownSubTrigger>
					<DropdownContent>
						<DropdownItem>Jazz</DropdownItem>
						<DropdownItem>Rock</DropdownItem>
						<DropdownItem>Pop</DropdownItem>
					</DropdownContent>
				</Dropdown>
			</DropdownContent>
		</Dropdown>
	)
}

Installation

npx shadcn@latest add https://9ui.dev/r/dropdown

Usage

Imports
import {
	Dropdown,
	DropdownCheckboxItem,
	DropdownContent,
	DropdownGroup,
	DropdownGroupLabel,
	DropdownItem,
	DropdownItemShortcut,
	DropdownRadioGroup,
	DropdownRadioItem,
	DropdownSeparator,
	DropdownSubTrigger,
	DropdownTrigger,
} from "@/components/ui/dropdown"
Anatomy
<Dropdown>
	<DropdownTrigger />
	<DropdownContent>
		<DropdownGroup>
			<DropdownGroupLabel />
			<DropdownItem>
				<DropdownItemShortcut />
			</DropdownItem>
		</DropdownGroup>
		<DropdownSeparator />
		<DropdownCheckboxItem />
		<DropdownRadioGroup>
			<DropdownRadioItem />
		</DropdownRadioGroup>
		<Dropdown>
			<DropdownSubTrigger />
			<DropdownContent>
				<DropdownItem />
			</DropdownContent>
		</Dropdown>
	</DropdownContent>
</Dropdown>