{
	"$schema": "https://ui.shadcn.com/schema/registry-item.json",
	"name": "dropdown-menu",
	"dependencies": [],
	"registryDependencies": [],
	"files": [
		{
			"path": "ui/dropdown-menu.tsx",
			"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Menu as BaseMenu } from \"@base-ui/react/menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Root>) {\n\treturn <BaseMenu.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Portal>) {\n\treturn <BaseMenu.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Trigger>) {\n\treturn <BaseMenu.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuPositioner({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Positioner>) {\n\treturn <BaseMenu.Positioner data-slot=\"dropdown-menu-positioner\" {...props} />\n}\n\nfunction DropdownMenuContent({\n\tclassName,\n\tsideOffset = 4,\n\talign = \"center\",\n\tside = \"bottom\",\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Popup> & {\n\talign?: BaseMenu.Positioner.Props[\"align\"]\n\tsideOffset?: BaseMenu.Positioner.Props[\"sideOffset\"]\n\tside?: BaseMenu.Positioner.Props[\"side\"]\n}) {\n\treturn (\n\t\t<DropdownMenuPortal>\n\t\t\t<DropdownMenuPositioner\n\t\t\t\tclassName=\"max-h-(--available-height)\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tside={side}\n\t\t\t\talign={align}\n\t\t\t>\n\t\t\t\t<BaseMenu.Popup\n\t\t\t\t\tdata-slot=\"dropdown-menu-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-popover text-popover-foreground z-50 min-w-48 origin-(--transform-origin) overflow-hidden rounded-md border p-1 shadow-md transition-all data-ending-style:scale-98 data-ending-style:opacity-0 data-starting-style:scale-98 data-starting-style:opacity-0\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</DropdownMenuPositioner>\n\t\t</DropdownMenuPortal>\n\t)\n}\n\nfunction DropdownMenuGroup({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Group>) {\n\treturn <BaseMenu.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuItem({\n\tclassName,\n\tinset,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Item> & {\n\tinset?: boolean\n\tvariant?: \"default\" | \"destructive\"\n}) {\n\treturn (\n\t\t<BaseMenu.Item\n\t\t\tdata-slot=\"dropdown-menu-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:text-destructive! focus:data-[variant=destructive]:*:[svg]:text-destructive-foreground! [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-all select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:transition-all [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction DropdownMenuShortcut({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"dropdown-menu-shortcut\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground ml-auto text-xs tracking-widest\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction DropdownMenuSeparator({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Separator>) {\n\treturn (\n\t\t<BaseMenu.Separator\n\t\t\tdata-slot=\"dropdown-menu-separator\"\n\t\t\tclassName={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction DropdownMenuLabel({\n\tclassName,\n\tinset,\n\t...props\n}: React.ComponentProps<typeof BaseMenu.GroupLabel> & {\n\tinset?: boolean\n}) {\n\treturn (\n\t\t<BaseMenu.GroupLabel\n\t\t\tdata-slot=\"dropdown-menu-label\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"px-2 py-1.5 text-xs font-medium data-inset:pl-8\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction DropdownMenuCheckboxItem({\n\tclassName,\n\tchildren,\n\tchecked,\n\t...props\n}: React.ComponentProps<typeof BaseMenu.CheckboxItem>) {\n\treturn (\n\t\t<BaseMenu.CheckboxItem\n\t\t\tdata-slot=\"dropdown-menu-checkbox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tchecked={checked}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<BaseMenu.CheckboxItemIndicator>\n\t\t\t\t\t<CheckIcon className=\"size-4\" />\n\t\t\t\t</BaseMenu.CheckboxItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</BaseMenu.CheckboxItem>\n\t)\n}\n\nfunction DropdownMenuRadioGroup({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.RadioGroup>) {\n\treturn (\n\t\t<BaseMenu.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />\n\t)\n}\n\nfunction DropdownMenuRadioItem({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof BaseMenu.RadioItem>) {\n\treturn (\n\t\t<BaseMenu.RadioItem\n\t\t\tdata-slot=\"dropdown-menu-radio-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<BaseMenu.RadioItemIndicator>\n\t\t\t\t\t<CircleIcon className=\"size-2 fill-current\" />\n\t\t\t\t</BaseMenu.RadioItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</BaseMenu.RadioItem>\n\t)\n}\n\nfunction DropdownMenuSub({\n\t...props\n}: React.ComponentProps<typeof BaseMenu.SubmenuRoot>) {\n\treturn <BaseMenu.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n\tclassName,\n\tinset,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof BaseMenu.SubmenuTrigger> & {\n\tinset?: boolean\n}) {\n\treturn (\n\t\t<BaseMenu.SubmenuTrigger\n\t\t\tcloseDelay={0}\n\t\t\tdelay={0}\n\t\t\tdata-slot=\"dropdown-menu-sub-trigger\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"focus:bg-accent focus:text-accent-foreground data-popup-open:bg-accent data-popup-open:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ChevronRightIcon className=\"ml-auto size-4\" />\n\t\t</BaseMenu.SubmenuTrigger>\n\t)\n}\n\nfunction DropdownMenuSubContent({\n\tclassName,\n\tsideOffset = 0,\n\talign = \"start\",\n\t...props\n}: React.ComponentProps<typeof BaseMenu.Popup> & {\n\talign?: BaseMenu.Positioner.Props[\"align\"]\n\tsideOffset?: BaseMenu.Positioner.Props[\"sideOffset\"]\n}) {\n\treturn (\n\t\t<DropdownMenuPortal>\n\t\t\t<DropdownMenuPositioner\n\t\t\t\tclassName=\"max-h-(--available-height)\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\talign={align}\n\t\t\t>\n\t\t\t\t<BaseMenu.Popup\n\t\t\t\t\tdata-slot=\"dropdown-menu-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-popover text-popover-foreground z-50 min-w-48 origin-(--transform-origin) overflow-hidden rounded-md border p-1 shadow-md transition-all data-ending-style:scale-98 data-ending-style:opacity-0 data-starting-style:scale-98 data-starting-style:opacity-0\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</DropdownMenuPositioner>\n\t\t</DropdownMenuPortal>\n\t)\n}\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuPortal,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuItem,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuSub,\n\tDropdownMenuSubTrigger,\n\tDropdownMenuSubContent,\n}\n",
			"type": "registry:ui",
			"target": ""
		}
	],
	"type": "registry:ui"
}
