{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "glass-menubar",
  "title": "Glass Menubar",
  "author": "Alex Chih (https://alexchih.com)",
  "description": "Application menubar on the glass pill with strong-glass dropdowns, built on Radix Menubar.",
  "dependencies": [
    "radix-ui",
    "lucide-react"
  ],
  "registryDependencies": [
    "https://washiveil.alexchih.com/r/theme.json"
  ],
  "files": [
    {
      "path": "registry/washiveil/ui/glass-menubar.tsx",
      "content": "'use client'\n\nimport * as React from 'react'\nimport { Menubar as MenubarPrimitive } from 'radix-ui'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nconst GlassMenubar = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.Root\n    ref={ref}\n    className={cn(\n      'flex items-center gap-1 rounded-full border border-muted bg-muted p-1 backdrop-blur',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst GlassMenubarMenu = MenubarPrimitive.Menu\n\nconst GlassMenubarGroup = MenubarPrimitive.Group\n\nconst GlassMenubarPortal = MenubarPrimitive.Portal\n\nconst GlassMenubarSub = MenubarPrimitive.Sub\n\nconst GlassMenubarRadioGroup = MenubarPrimitive.RadioGroup\n\nconst GlassMenubarTrigger = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      'flex cursor-default select-none items-center rounded-full px-3 py-1.5 text-sm font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst GlassMenubarSubTrigger = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <MenubarPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      'flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground focus:ring-2 focus:ring-inset focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </MenubarPrimitive.SubTrigger>\n))\nGlassMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst GlassMenubarSubContent = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.Portal>\n    <MenubarPrimitive.SubContent\n      ref={ref}\n      className={cn(\n        'z-50 min-w-[8rem] 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)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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',\n        className,\n      )}\n      {...props}\n    />\n  </MenubarPrimitive.Portal>\n))\nGlassMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst GlassMenubarContent = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(({ className, align = 'start', alignOffset = -4, sideOffset = 8, ...props }, ref) => (\n  <MenubarPrimitive.Portal>\n    <MenubarPrimitive.Content\n      ref={ref}\n      align={align}\n      alignOffset={alignOffset}\n      sideOffset={sideOffset}\n      className={cn(\n        'z-50 min-w-[12rem] 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)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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',\n        className,\n      )}\n      {...props}\n    />\n  </MenubarPrimitive.Portal>\n))\nGlassMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst GlassMenubarItem = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <MenubarPrimitive.Item\n    ref={ref}\n    className={cn(\n      'relative flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground focus:ring-2 focus:ring-inset focus:ring-ring data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  />\n))\nGlassMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst GlassMenubarCheckboxItem = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <MenubarPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      'relative flex cursor-default select-none items-center rounded-lg py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground focus:ring-2 focus:ring-inset focus:ring-ring data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n      <MenubarPrimitive.ItemIndicator>\n        <Check className=\"size-4\" />\n      </MenubarPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </MenubarPrimitive.CheckboxItem>\n))\nGlassMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst GlassMenubarRadioItem = React.forwardRef<\n  React.ComponentRef<typeof MenubarPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <MenubarPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      'relative flex cursor-default select-none items-center rounded-lg py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground focus:ring-2 focus:ring-inset focus:ring-ring data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n      <MenubarPrimitive.ItemIndicator>\n        <Circle className=\"size-2 fill-current\" />\n      </MenubarPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </MenubarPrimitive.RadioItem>\n))\nGlassMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nfunction GlassMenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.Label\n      className={cn(\n        'font-mono text-[0.6875rem] tracking-[0.15em] uppercase text-muted-foreground px-2 py-1.5',\n        inset && 'pl-8',\n        className,\n      )}\n      {...props}\n    />\n  )\n}\nGlassMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nfunction GlassMenubarSeparator({ className, ...props }: React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>) {\n  return <MenubarPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-border', className)} {...props} />\n}\nGlassMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nfunction GlassMenubarShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n  return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />\n}\nGlassMenubarShortcut.displayName = 'GlassMenubarShortcut'\n\nexport {\n  GlassMenubar,\n  GlassMenubarMenu,\n  GlassMenubarTrigger,\n  GlassMenubarContent,\n  GlassMenubarItem,\n  GlassMenubarCheckboxItem,\n  GlassMenubarRadioItem,\n  GlassMenubarLabel,\n  GlassMenubarSeparator,\n  GlassMenubarShortcut,\n  GlassMenubarGroup,\n  GlassMenubarPortal,\n  GlassMenubarSub,\n  GlassMenubarSubContent,\n  GlassMenubarSubTrigger,\n  GlassMenubarRadioGroup,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}