Glass Context Menu
washiveil/glass-context-menuFreeComponent
Right-click menu on strong glass — items, checkboxes, radios, submenus. Built on Radix ContextMenu.
Install it
npx shadcn@latest add https://washiveil.alexchih.com/r/glass-context-menu.jsonSource
1'use client'23import * as React from 'react'4import { ContextMenu as ContextMenuPrimitive } from 'radix-ui'5import { Check, ChevronRight, Circle } from 'lucide-react'67import { cn } from '@/lib/utils'89const GlassContextMenu = ContextMenuPrimitive.Root1011const GlassContextMenuTrigger = ContextMenuPrimitive.Trigger1213const GlassContextMenuGroup = ContextMenuPrimitive.Group1415const GlassContextMenuPortal = ContextMenuPrimitive.Portal1617const GlassContextMenuSub = ContextMenuPrimitive.Sub1819const GlassContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup2021const GlassContextMenuSubTrigger = React.forwardRef<22 React.ComponentRef<typeof ContextMenuPrimitive.SubTrigger>,23 React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {24 inset?: boolean25 }26>(({ className, inset, children, ...props }, ref) => (27 <ContextMenuPrimitive.SubTrigger28 ref={ref}29 className={cn(30 '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',31 inset && 'pl-8',32 className,33 )}34 {...props}35 >36 {children}37 <ChevronRight className="ml-auto" />38 </ContextMenuPrimitive.SubTrigger>39))40GlassContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName4142const GlassContextMenuSubContent = React.forwardRef<43 React.ComponentRef<typeof ContextMenuPrimitive.SubContent>,44 React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>45>(({ className, ...props }, ref) => (46 <ContextMenuPrimitive.Portal>47 <ContextMenuPrimitive.SubContent48 ref={ref}49 className={cn(50 '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',51 className,52 )}53 {...props}54 />55 </ContextMenuPrimitive.Portal>56))57GlassContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName5859// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from washiveil
All 58 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Ambient Fieldambient-field | washiveil | Components | Free | no deps | |
| Chipchip | washiveil | Components | Free | 1 dep | |
| Code Badgecode-badge | washiveil | Components | Free | no deps | |
| Glass Accordionglass-accordion | washiveil | Components | Free | 2 deps | |
| Glass Alertglass-alert | washiveil | Components | Free | 1 dep | |
| Glass Alert Dialogglass-alert-dialog | washiveil | Components | Free | 1 dep | |
| Glass Aspect Ratioglass-aspect-ratio | washiveil | Components | Free | 1 dep | |
| Glass Avatarglass-avatar | washiveil | Components | Free | 1 dep |
