{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "navigation-menu",
  "title": "Navigation Menu",
  "description": "shadcn navigation-menu reskinned for UI95.",
  "dependencies": [
    "class-variance-authority",
    "cn",
    "radix-ui"
  ],
  "registryDependencies": [
    "@ui95/theme",
    "@ui95/pixel-glyphs"
  ],
  "files": [
    {
      "path": "components/ui/navigation-menu.tsx",
      "content": "import { cva } from \"class-variance-authority\"\nimport { cn } from \"cn\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { ChevronGlyph } from \"@/components/ui/pixel-glyphs\"\n\nfunction NavigationMenu({\n  className,\n  children,\n  viewport = true,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n  viewport?: boolean\n}) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      data-viewport={viewport}\n      className={cn(\n        \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {viewport && <NavigationMenuViewport />}\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group/navigation-menu-trigger inline-flex h-8 w-max items-center justify-center px-3 font-pixel text-[16px] leading-none uppercase outline-none select-none hover:bg-foreground hover:text-popover focus:bg-foreground focus:text-popover focus-visible:bg-foreground focus-visible:text-popover disabled:pointer-events-none disabled:text-muted-foreground data-[state=open]:bevel-sunken data-[state=open]:hover:bg-card data-[state=open]:hover:text-card-foreground data-[state=open]:focus:bg-card data-[state=open]:focus:text-card-foreground\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}\n      <ChevronGlyph className=\"ml-2 size-3 group-data-[state=open]/navigation-menu-trigger:hidden\" />\n      <ChevronGlyph\n        direction=\"up\"\n        className=\"ml-2 hidden size-3 group-data-[state=open]/navigation-menu-trigger:block\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"top-0 left-0 w-full p-(--pixel) group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:pixel-border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:offset-shadow-2 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuViewport({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n  return (\n    <div className=\"absolute top-full left-0 isolate z-50 flex justify-center\">\n      <NavigationMenuPrimitive.Viewport\n        data-slot=\"navigation-menu-viewport\"\n        className={cn(\n          \"relative mt-1 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden pixel-border border-border bg-popover text-popover-foreground offset-shadow-2 md:w-(--radix-navigation-menu-viewport-width)\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"flex items-center gap-2 p-2 text-xl leading-tight outline-none select-none hover:bg-foreground hover:text-popover focus:bg-foreground focus:text-popover data-active:bg-secondary data-active:text-secondary-foreground data-active:hover:bg-foreground data-active:hover:text-popover data-active:focus:bg-foreground data-active:focus:text-popover [&_svg:not([class*='size-'])]:size-3.5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n  return (\n    <NavigationMenuPrimitive.Indicator\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"relative top-[60%] h-2 w-2 bg-border\" />\n    </NavigationMenuPrimitive.Indicator>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuIndicator,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n  NavigationMenuViewport,\n}\n",
      "type": "registry:ui"
    }
  ],
  "meta": {
    "sounds": {
      "button.press": {
        "note": "Tactile switch: bandpassed noise bump plus a square click",
        "layers": [
          {
            "wave": "noise",
            "frequency": 0,
            "attack": 0.0003,
            "decay": 0.006,
            "gain": 0.6,
            "filter": {
              "type": "bandpass",
              "frequency": 3500,
              "q": 2
            }
          },
          {
            "wave": "square",
            "frequency": 2200,
            "attack": 0.0005,
            "decay": 0.005,
            "gain": 0.15
          }
        ],
        "jitter": {
          "cents": 100,
          "gainDb": 6,
          "decay": 0.12
        }
      },
      "button.release": {
        "note": "Lighter, higher tactile click",
        "layers": [
          {
            "wave": "noise",
            "frequency": 0,
            "attack": 0.0003,
            "decay": 0.004,
            "gain": 0.35,
            "filter": {
              "type": "bandpass",
              "frequency": 4200,
              "q": 2
            }
          },
          {
            "wave": "square",
            "frequency": 2600,
            "attack": 0.0005,
            "decay": 0.004,
            "gain": 0.08
          }
        ],
        "jitter": {
          "cents": 91,
          "gainDb": 1.5,
          "decay": 0.12
        }
      }
    }
  },
  "categories": [
    "ui"
  ],
  "type": "registry:ui"
}
