{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "components-radix-dropdown-menu",
  "title": "Dropdown Menu",
  "description": "Displays a menu to the user — such as a set of actions or functions — triggered by a button.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "@odysseyui/primitives-radix-dropdown-menu"
  ],
  "files": [
    {
      "path": "registry/components/radix/dropdown-menu/index.tsx",
      "content": "import * as React from 'react';\n\nimport {\n  DropdownMenu as DropdownMenuPrimitive,\n  DropdownMenuContent as DropdownMenuContentPrimitive,\n  DropdownMenuGroup as DropdownMenuGroupPrimitive,\n  DropdownMenuHighlightItem as DropdownMenuHighlightItemPrimitive,\n  DropdownMenuHighlight as DropdownMenuHighlightPrimitive,\n  DropdownMenuItem as DropdownMenuItemPrimitive,\n  DropdownMenuItemIndicator as DropdownMenuItemIndicatorPrimitive,\n  DropdownMenuCheckboxItem as DropdownMenuCheckboxItemPrimitive,\n  DropdownMenuRadioGroup as DropdownMenuRadioGroupPrimitive,\n  DropdownMenuRadioItem as DropdownMenuRadioItemPrimitive,\n  DropdownMenuLabel as DropdownMenuLabelPrimitive,\n  DropdownMenuSeparator as DropdownMenuSeparatorPrimitive,\n  DropdownMenuShortcut as DropdownMenuShortcutPrimitive,\n  DropdownMenuSub as DropdownMenuSubPrimitive,\n  DropdownMenuSubContent as DropdownMenuSubContentPrimitive,\n  DropdownMenuSubTrigger as DropdownMenuSubTriggerPrimitive,\n  DropdownMenuTrigger as DropdownMenuTriggerPrimitive,\n  type DropdownMenuProps as DropdownMenuPrimitiveProps,\n  type DropdownMenuContentProps as DropdownMenuContentPrimitiveProps,\n  type DropdownMenuGroupProps as DropdownMenuGroupPrimitiveProps,\n  type DropdownMenuItemProps as DropdownMenuItemPrimitiveProps,\n  type DropdownMenuCheckboxItemProps as DropdownMenuCheckboxItemPrimitiveProps,\n  type DropdownMenuRadioGroupProps as DropdownMenuRadioGroupPrimitiveProps,\n  type DropdownMenuRadioItemProps as DropdownMenuRadioItemPrimitiveProps,\n  type DropdownMenuLabelProps as DropdownMenuLabelPrimitiveProps,\n  type DropdownMenuSeparatorProps as DropdownMenuSeparatorPrimitiveProps,\n  type DropdownMenuShortcutProps as DropdownMenuShortcutPrimitiveProps,\n  type DropdownMenuSubProps as DropdownMenuSubPrimitiveProps,\n  type DropdownMenuSubContentProps as DropdownMenuSubContentPrimitiveProps,\n  type DropdownMenuSubTriggerProps as DropdownMenuSubTriggerPrimitiveProps,\n  type DropdownMenuTriggerProps as DropdownMenuTriggerPrimitiveProps,\n} from '@/components/odyssey/primitives/radix/dropdown-menu';\nimport { cn } from '@/lib/utils';\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\ntype DropdownMenuProps = DropdownMenuPrimitiveProps;\n\nfunction DropdownMenu(props: DropdownMenuProps) {\n  return <DropdownMenuPrimitive {...props} />;\n}\n\ntype DropdownMenuTriggerProps = DropdownMenuTriggerPrimitiveProps;\n\nfunction DropdownMenuTrigger(props: DropdownMenuTriggerProps) {\n  return <DropdownMenuTriggerPrimitive {...props} />;\n}\n\ntype DropdownMenuContentProps = DropdownMenuContentPrimitiveProps;\n\nfunction DropdownMenuContent({\n  sideOffset = 4,\n  className,\n  children,\n  ...props\n}: DropdownMenuContentProps) {\n  return (\n    <DropdownMenuContentPrimitive\n      sideOffset={sideOffset}\n      className={cn(\n        'bg-popover text-popover-foreground z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md outline-none',\n        className,\n      )}\n      {...props}\n    >\n      <DropdownMenuHighlightPrimitive className=\"absolute inset-0 bg-accent z-0 rounded-sm\">\n        {children}\n      </DropdownMenuHighlightPrimitive>\n    </DropdownMenuContentPrimitive>\n  );\n}\n\ntype DropdownMenuGroupProps = DropdownMenuGroupPrimitiveProps;\n\nfunction DropdownMenuGroup({ ...props }: DropdownMenuGroupProps) {\n  return <DropdownMenuGroupPrimitive {...props} />;\n}\n\ntype DropdownMenuItemProps = DropdownMenuItemPrimitiveProps & {\n  inset?: boolean;\n  variant?: 'default' | 'destructive';\n};\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = 'default',\n  disabled,\n  ...props\n}: DropdownMenuItemProps) {\n  return (\n    <DropdownMenuHighlightItemPrimitive\n      activeClassName={\n        variant === 'destructive'\n          ? 'bg-destructive/10 dark:bg-destructive/20'\n          : ''\n      }\n      disabled={disabled}\n    >\n      <DropdownMenuItemPrimitive\n        disabled={disabled}\n        data-inset={inset}\n        data-variant={variant}\n        className={cn(\n          \"focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_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 select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n          className,\n        )}\n        {...props}\n      />\n    </DropdownMenuHighlightItemPrimitive>\n  );\n}\n\ntype DropdownMenuCheckboxItemProps = DropdownMenuCheckboxItemPrimitiveProps;\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  disabled,\n  ...props\n}: DropdownMenuCheckboxItemProps) {\n  return (\n    <DropdownMenuHighlightItemPrimitive disabled={disabled}>\n      <DropdownMenuCheckboxItemPrimitive\n        disabled={disabled}\n        className={cn(\n          \"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=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n          className,\n        )}\n        checked={checked}\n        {...props}\n      >\n        <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n          <DropdownMenuItemIndicatorPrimitive\n            initial={{ opacity: 0, scale: 0.5 }}\n            animate={{ opacity: 1, scale: 1 }}\n          >\n            <CheckIcon className=\"size-4\" />\n          </DropdownMenuItemIndicatorPrimitive>\n        </span>\n        {children}\n      </DropdownMenuCheckboxItemPrimitive>\n    </DropdownMenuHighlightItemPrimitive>\n  );\n}\n\ntype DropdownMenuRadioGroupProps = DropdownMenuRadioGroupPrimitiveProps;\n\nfunction DropdownMenuRadioGroup(props: DropdownMenuRadioGroupProps) {\n  return <DropdownMenuRadioGroupPrimitive {...props} />;\n}\n\ntype DropdownMenuRadioItemProps = DropdownMenuRadioItemPrimitiveProps;\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  disabled,\n  ...props\n}: DropdownMenuRadioItemProps) {\n  return (\n    <DropdownMenuHighlightItemPrimitive disabled={disabled}>\n      <DropdownMenuRadioItemPrimitive\n        disabled={disabled}\n        className={cn(\n          \"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=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n          className,\n        )}\n        {...props}\n      >\n        <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n          <DropdownMenuItemIndicatorPrimitive layoutId=\"dropdown-menu-item-indicator-radio\">\n            <CircleIcon className=\"size-2 fill-current\" />\n          </DropdownMenuItemIndicatorPrimitive>\n        </span>\n        {children}\n      </DropdownMenuRadioItemPrimitive>\n    </DropdownMenuHighlightItemPrimitive>\n  );\n}\n\ntype DropdownMenuLabelProps = DropdownMenuLabelPrimitiveProps & {\n  inset?: boolean;\n};\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: DropdownMenuLabelProps) {\n  return (\n    <DropdownMenuLabelPrimitive\n      data-inset={inset}\n      className={cn(\n        'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ntype DropdownMenuSeparatorProps = DropdownMenuSeparatorPrimitiveProps;\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: DropdownMenuSeparatorProps) {\n  return (\n    <DropdownMenuSeparatorPrimitive\n      className={cn('bg-border -mx-1 my-1 h-px', className)}\n      {...props}\n    />\n  );\n}\n\ntype DropdownMenuShortcutProps = DropdownMenuShortcutPrimitiveProps;\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: DropdownMenuShortcutProps) {\n  return (\n    <DropdownMenuShortcutPrimitive\n      className={cn(\n        'text-muted-foreground ml-auto text-xs tracking-widest',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ntype DropdownMenuSubProps = DropdownMenuSubPrimitiveProps;\n\nfunction DropdownMenuSub(props: DropdownMenuSubProps) {\n  return <DropdownMenuSubPrimitive {...props} />;\n}\n\ntype DropdownMenuSubTriggerProps = DropdownMenuSubTriggerPrimitiveProps & {\n  inset?: boolean;\n};\n\nfunction DropdownMenuSubTrigger({\n  disabled,\n  className,\n  inset,\n  children,\n  ...props\n}: DropdownMenuSubTriggerProps) {\n  return (\n    <DropdownMenuHighlightItemPrimitive disabled={disabled}>\n      <DropdownMenuSubTriggerPrimitive\n        disabled={disabled}\n        data-inset={inset}\n        className={cn(\n          'focus:text-accent-foreground data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8',\n          'data-[state=open]:[&_[data-slot=chevron]]:rotate-90 [&_[data-slot=chevron]]:transition-transform [&_[data-slot=chevron]]:duration-300 [&_[data-slot=chevron]]:ease-in-out',\n          className,\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronRightIcon data-slot=\"chevron\" className=\"ml-auto size-4\" />\n      </DropdownMenuSubTriggerPrimitive>\n    </DropdownMenuHighlightItemPrimitive>\n  );\n}\n\ntype DropdownMenuSubContentProps = DropdownMenuSubContentPrimitiveProps;\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: DropdownMenuSubContentProps) {\n  return (\n    <DropdownMenuSubContentPrimitive\n      className={cn(\n        'bg-popover text-popover-foreground z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg outline-none',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n  type DropdownMenuProps,\n  type DropdownMenuTriggerProps,\n  type DropdownMenuContentProps,\n  type DropdownMenuGroupProps,\n  type DropdownMenuItemProps,\n  type DropdownMenuCheckboxItemProps,\n  type DropdownMenuRadioGroupProps,\n  type DropdownMenuRadioItemProps,\n  type DropdownMenuLabelProps,\n  type DropdownMenuSeparatorProps,\n  type DropdownMenuShortcutProps,\n  type DropdownMenuSubProps,\n  type DropdownMenuSubTriggerProps,\n  type DropdownMenuSubContentProps,\n};\n",
      "type": "registry:ui",
      "target": "components/odysseyui/components/radix/dropdown-menu.tsx"
    }
  ],
  "type": "registry:ui"
}