{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "action-dropdown", "type": "registry:component", "title": "Action Dropdown", "description": "A dropdown menu for various actions", "dependencies": [ "lucide-react" ], "registryDependencies": [ "dropdown-menu", "button", "utils" ], "files": [ { "path": "registry/default/components/dropdown-menu/action-dropdown.tsx", "content": "'use client'\r\n\r\nimport { Button } from '@/registry/default/ui/button'\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuTrigger,\r\n} from '@/registry/default/ui/dropdown-menu'\r\nimport { cn } from '@/lib/utils'\r\nimport {\r\n EllipsisIcon,\r\n LockIcon,\r\n ScanSearchIcon,\r\n SquarePenIcon,\r\n Trash2Icon,\r\n} from 'lucide-react'\r\n\r\ntype ActionDropdownProps = {\r\n align?: 'start' | 'end' | 'center'\r\n side?: 'top' | 'right' | 'bottom' | 'left'\r\n}\r\n\r\ntype Item = {\r\n id: string\r\n subItems: {\r\n label: string\r\n shortcut: string\r\n icon: React.ReactNode\r\n action: () => void\r\n variant?: 'destructive' | 'default'\r\n }[]\r\n}\r\n\r\nconst items: Item[] = [\r\n {\r\n id: 'general',\r\n subItems: [\r\n {\r\n label: 'Edit',\r\n shortcut: 'E',\r\n icon: ,\r\n action: () => {\r\n console.log('Edit clicked')\r\n },\r\n },\r\n {\r\n label: 'View',\r\n shortcut: 'V',\r\n icon: ,\r\n action: () => {\r\n console.log('View clicked')\r\n },\r\n },\r\n {\r\n label: 'Block',\r\n shortcut: 'B',\r\n icon: ,\r\n action: () => {\r\n console.log('Block clicked')\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: 'destructive',\r\n subItems: [\r\n {\r\n label: 'Delete',\r\n shortcut: 'D',\r\n icon: ,\r\n action: () => {\r\n console.log('Delete clicked')\r\n },\r\n variant: 'destructive',\r\n },\r\n ],\r\n },\r\n]\r\n\r\nexport default function ActionDropdown({\r\n align = 'end',\r\n side = 'bottom',\r\n}: ActionDropdownProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Actions\r\n \r\n {items.map((item, index) => (\r\n \r\n {item.subItems.map((subItem) => (\r\n \r\n {subItem.icon}\r\n {subItem.label}\r\n \r\n {subItem.shortcut}\r\n \r\n \r\n ))}\r\n {index < items.length - 1 && }\r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n", "type": "registry:component", "target": "components/action-dropdown.tsx" } ] }