{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "glass-navigation-menu",
  "title": "Glass Navigation Menu",
  "author": "Alex Chih (https://alexchih.com)",
  "description": "Site navigation with strong-glass flyout panels, built on Radix NavigationMenu.",
  "dependencies": [
    "radix-ui",
    "lucide-react",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "https://washiveil.alexchih.com/r/theme.json"
  ],
  "files": [
    {
      "path": "registry/washiveil/ui/glass-navigation-menu.tsx",
      "content": "'use client'\n\nimport * as React from 'react'\nimport { NavigationMenu as NavigationMenuPrimitive } from 'radix-ui'\nimport { cva } from 'class-variance-authority'\nimport { ChevronDown } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nconst GlassNavigationMenu = React.forwardRef<\n  React.ComponentRef<typeof NavigationMenuPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n  <NavigationMenuPrimitive.Root\n    ref={ref}\n    className={cn('relative z-10 flex max-w-max flex-1 items-center justify-center', className)}\n    {...props}\n  >\n    {children}\n    <GlassNavigationMenuViewport />\n  </NavigationMenuPrimitive.Root>\n))\nGlassNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst GlassNavigationMenuList = React.forwardRef<\n  React.ComponentRef<typeof NavigationMenuPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.List\n    ref={ref}\n    className={cn(\n      'group flex flex-1 list-none items-center justify-center gap-1 rounded-full border border-muted bg-muted p-1 backdrop-blur',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst GlassNavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n  'group inline-flex items-center justify-center rounded-full px-3.5 py-1.5 text-sm font-medium text-muted-foreground dark:text-body transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[active]:bg-accent data-[active]:text-accent-foreground',\n)\n\nconst GlassNavigationMenuTrigger = React.forwardRef<\n  React.ComponentRef<typeof NavigationMenuPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <NavigationMenuPrimitive.Trigger\n    ref={ref}\n    className={cn(navigationMenuTriggerStyle(), 'group', className)}\n    {...props}\n  >\n    {children}{' '}\n    <ChevronDown\n      className=\"relative top-[1px] ml-1 size-3 transition duration-200 group-data-[state=open]:rotate-180\"\n      aria-hidden=\"true\"\n    />\n  </NavigationMenuPrimitive.Trigger>\n))\nGlassNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst GlassNavigationMenuContent = React.forwardRef<\n  React.ComponentRef<typeof NavigationMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.Content\n    ref={ref}\n    className={cn(\n      'left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst GlassNavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst GlassNavigationMenuIndicator = React.forwardRef<\n  React.ComponentRef<typeof NavigationMenuPrimitive.Indicator>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.Indicator\n    ref={ref}\n    className={cn(\n      'top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in',\n      className,\n    )}\n    {...props}\n  >\n    <div className=\"relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-glass-edge shadow-md\" />\n  </NavigationMenuPrimitive.Indicator>\n))\nGlassNavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName\n\nconst GlassNavigationMenuViewport = React.forwardRef<\n  React.ComponentRef<typeof NavigationMenuPrimitive.Viewport>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n  <div className={cn('absolute left-0 top-full flex justify-center')}>\n    <NavigationMenuPrimitive.Viewport\n      className={cn(\n        'origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-2xl border border-glass-edge bg-glass-stronger p-1.5 backdrop-blur-2xl backdrop-saturate-150 shadow-[0_16px_48px_rgba(28,25,20,0.12)] transition-[width,_height] duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]',\n        className,\n      )}\n      ref={ref}\n      {...props}\n    />\n  </div>\n))\nGlassNavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName\n\nexport {\n  navigationMenuTriggerStyle,\n  GlassNavigationMenu,\n  GlassNavigationMenuList,\n  GlassNavigationMenuItem,\n  GlassNavigationMenuContent,\n  GlassNavigationMenuTrigger,\n  GlassNavigationMenuLink,\n  GlassNavigationMenuIndicator,\n  GlassNavigationMenuViewport,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}