{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "glass-dropdown-menu",
  "title": "Glass Dropdown Menu",
  "description": "Glass Dropdown Menu with five variants: clear, frosted, subtle, liquid, and liquid-refract",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "@glasscn/utils",
    "@glasscn/dropdown-menu",
    "@glasscn/glass-variants",
    "@glasscn/liquid-glass"
  ],
  "files": [
    {
      "path": "components/ui/glasscn/glass-dropdown-menu.tsx",
      "content": "\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport type * as React from \"react\";\n\nimport { type FrostGlassVariantProp, glassVariantStyles } from \"@/lib/glass-variants\";\nimport { cn } from \"@/lib/utils\";\n\nimport { DropdownMenuContent } from \"../dropdown-menu\";\nimport { LiquidGlass } from \"./liquid-glass\";\n\ntype GlassDropdownMenuContentProps = React.ComponentProps<typeof DropdownMenuContent> &\n  FrostGlassVariantProp & { glassClassName?: string };\n\nconst menuStateStyles = [\n  \"[&_[data-slot=dropdown-menu-item]:focus]:bg-white/70\",\n  \"[&_[data-slot=dropdown-menu-item]:focus]:text-black\",\n  \"dark:[&_[data-slot=dropdown-menu-item]:focus]:bg-white/12\",\n  \"dark:[&_[data-slot=dropdown-menu-item]:focus]:text-white\",\n  \"[&_[data-slot=dropdown-menu-checkbox-item]:focus]:bg-white/70\",\n  \"[&_[data-slot=dropdown-menu-checkbox-item]:focus]:text-black\",\n  \"dark:[&_[data-slot=dropdown-menu-checkbox-item]:focus]:bg-white/12\",\n  \"dark:[&_[data-slot=dropdown-menu-checkbox-item]:focus]:text-white\",\n  \"[&_[data-slot=dropdown-menu-sub-trigger]:focus]:bg-white/70\",\n  \"[&_[data-slot=dropdown-menu-sub-trigger]:focus]:text-black\",\n  \"dark:[&_[data-slot=dropdown-menu-sub-trigger]:focus]:bg-white/12\",\n  \"dark:[&_[data-slot=dropdown-menu-sub-trigger]:focus]:text-white\",\n  \"[&_[data-slot=dropdown-menu-separator]]:bg-white/25\",\n  \"dark:[&_[data-slot=dropdown-menu-separator]]:bg-white/10\",\n].join(\" \");\n\nfunction GlassDropdownMenuContent({\n  className,\n  glassClassName,\n  glassVariant = \"liquid-refract\",\n  showBackdrop = false,\n  align = \"start\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  ...props\n}: GlassDropdownMenuContentProps) {\n  if (glassVariant === \"liquid-refract\") {\n    return (\n      <MenuPrimitive.Portal>\n        {showBackdrop ? (\n          <MenuPrimitive.Backdrop\n            className=\"data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 z-40 bg-black/8 duration-100 dark:bg-black/30\"\n            data-slot=\"dropdown-menu-backdrop\"\n          />\n        ) : null}\n        <MenuPrimitive.Positioner\n          align={align}\n          alignOffset={alignOffset}\n          className=\"isolate z-50 outline-none\"\n          side={side}\n          sideOffset={sideOffset}\n        >\n          <LiquidGlass className={cn(\"rounded-lg\", glassClassName)}>\n            <MenuPrimitive.Popup\n              className={cn(\n                \"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-transparent p-1 text-foreground shadow-none outline-none ring-0 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-closed:overflow-hidden\",\n                menuStateStyles,\n                className,\n              )}\n              data-glass-variant={glassVariant}\n              data-slot=\"glass-dropdown-menu-content\"\n              {...props}\n            />\n          </LiquidGlass>\n        </MenuPrimitive.Positioner>\n      </MenuPrimitive.Portal>\n    );\n  }\n\n  return (\n    <DropdownMenuContent\n      align={align}\n      alignOffset={alignOffset}\n      className={cn(\n        glassVariantStyles[glassVariant],\n        \"border border-white/30 bg-white/60 text-foreground shadow-2xl ring-1 ring-white/20 dark:border-white/10 dark:bg-black/55 dark:ring-white/10\",\n        menuStateStyles,\n        className,\n      )}\n      data-glass-variant={glassVariant}\n      data-slot=\"glass-dropdown-menu-content\"\n      showBackdrop={showBackdrop}\n      side={side}\n      sideOffset={sideOffset}\n      {...props}\n    />\n  );\n}\n\nexport { GlassDropdownMenuContent };\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:component"
}