{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "dropdown-menu",
  "type": "registry:ui",
  "dependencies": [
    "@base-ui/react",
    "clsx",
    "tailwind-merge"
  ],
  "registryDependencies": [
    "https://usva.build/r/overlay-core.json"
  ],
  "files": [
    {
      "path": "dropdown-menu.tsx",
      "target": "components/ui/dropdown-menu.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\nimport { Menu as Base } from \"@base-ui/react/menu\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { useScopedTheme } from \"./use-scoped-theme\";\n\nexport type DropdownMenuProps = Base.Root.Props;\n\nfunction DropdownMenuRoot(props: DropdownMenuProps) {\n  return <Base.Root {...props} />;\n}\nDropdownMenuRoot.displayName = \"DropdownMenu\";\n\nexport const DropdownMenuTrigger = Base.Trigger;\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<\n  typeof Base.Popup\n> & {\n  sideOffset?: number;\n};\n\nexport const DropdownMenuContent = React.forwardRef<\n  HTMLDivElement,\n  DropdownMenuContentProps\n>(({ className, sideOffset = 6, children, ...props }, ref) => {\n  const [probe, theme] = useScopedTheme();\n\n  return (\n    <>\n      <span ref={probe} hidden />\n      <Base.Portal>\n        <Base.Positioner\n          data-theme={theme}\n          sideOffset={sideOffset}\n          className=\"z-dropdown\"\n        >\n          <Base.Popup\n            ref={ref}\n            className={cn(\n              \"rim-light min-w-40 rounded-lg border border-border bg-surface-2 p-1 text-sm text-ink shadow-floating\",\n              \"origin-[var(--transform-origin)] transition-enter duration-base ease-spring motion-reduce:transition-none motion-reduce:transform-none\",\n              \"data-[starting-style]:translate-y-1 data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-[starting-style]:blur-[2px]\",\n              \"data-[ending-style]:scale-[0.98] data-[ending-style]:opacity-0 data-[ending-style]:duration-fast data-[ending-style]:ease-soft\",\n              className,\n            )}\n            {...props}\n          >\n            {children}\n          </Base.Popup>\n        </Base.Positioner>\n      </Base.Portal>\n    </>\n  );\n});\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\nexport type DropdownMenuItemProps = Omit<\n  React.ComponentPropsWithoutRef<typeof Base.Item>,\n  \"onClick\"\n> & {\n  onSelect?: React.ComponentPropsWithoutRef<typeof Base.Item>[\"onClick\"];\n};\n\nexport const DropdownMenuItem = React.forwardRef<\n  HTMLDivElement,\n  DropdownMenuItemProps\n>(({ className, onSelect, ...props }, ref) => (\n  <Base.Item\n    ref={ref}\n    onClick={onSelect}\n    className={cn(\n      \"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2 text-muted outline-none\",\n      \"before:absolute before:inset-0 before:rounded-[inherit] before:bg-ink/0 before:transition-tint before:duration-fast before:content-[''] motion-reduce:before:transition-none\",\n      \"[&>*]:relative data-[highlighted]:text-ink data-[highlighted]:before:bg-ink/5\",\n      \"data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50\",\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\nexport const DropdownMenuSeparator = React.forwardRef<\n  HTMLHRElement,\n  React.ComponentPropsWithoutRef<\"hr\">\n>(({ className, ...props }, ref) => (\n  <hr\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px border-0 bg-border\", className)}\n    {...props}\n  />\n));\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\n\nexport const DropdownMenuLabel = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"px-2.5 py-1.5 text-xs text-muted\", className)}\n    {...props}\n  />\n));\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\n\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n  Trigger: DropdownMenuTrigger,\n  Content: DropdownMenuContent,\n  Item: DropdownMenuItem,\n  Separator: DropdownMenuSeparator,\n  Label: DropdownMenuLabel,\n});\n"
    }
  ]
}