Context Menu
adn-ui/context-menuFreeComponent
A menu that appears at the pointer on right click or long press.
Live preview
live · rendered by the registry
Rendered by adn-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.awaiden.com/r/context-menu.jsonSource
1"use client";23import "./context-menu.css";4import { ContextMenu as BaseContextMenu } from "@base-ui/react/context-menu";5import type React from "react";6import { cn } from "tailwind-variants";78import { ContextMenuContext, useContextMenuContext } from "./context-menu.context";9import { contextMenuVariants, type ContextMenuVariants } from "./context-menu.variants";1011export type ContextMenuProps = ContextMenuVariants &12 React.ComponentProps<typeof BaseContextMenu.Root>;1314export const ContextMenuRoot = ({ children, size, ...props }: ContextMenuProps) => {15 const slots = contextMenuVariants({ size });1617 return (18 <ContextMenuContext.Provider value={{ slots }}>19 <BaseContextMenu.Root {...props}>{children}</BaseContextMenu.Root>20 </ContextMenuContext.Provider>21 );22};2324export type ContextMenuTriggerProps = React.ComponentProps<typeof BaseContextMenu.Trigger>;2526export const ContextMenuTrigger = ({ className, ...props }: ContextMenuTriggerProps) => {27 const { slots } = useContextMenuContext();28 return <BaseContextMenu.Trigger className={cn(slots.trigger(), className)} {...props} />;29};3031export type ContextMenuPortalProps = React.ComponentProps<typeof BaseContextMenu.Portal>;3233export const ContextMenuPortal = (props: ContextMenuPortalProps) => {34 return <BaseContextMenu.Portal {...props} />;35};3637export type ContextMenuPositionerProps = React.ComponentProps<typeof BaseContextMenu.Positioner>;3839export const ContextMenuPositioner = ({ className, ...props }: ContextMenuPositionerProps) => {40 const { slots } = useContextMenuContext();41 return <BaseContextMenu.Positioner className={cn(slots.positioner(), className)} {...props} />;42};4344export type ContextMenuPopupProps = React.ComponentProps<typeof BaseContextMenu.Popup>;4546export const ContextMenuPopup = ({ className, ...props }: ContextMenuPopupProps) => {47 const { slots } = useContextMenuContext();48 return <BaseContextMenu.Popup className={cn(slots.popup(), className)} {...props} />;49};5051export type ContextMenuItemProps = React.ComponentProps<typeof BaseContextMenu.Item>;5253export const ContextMenuItem = ({ className, ...props }: ContextMenuItemProps) => {54 const { slots } = useContextMenuContext();55 return <BaseContextMenu.Item className={cn(slots.item(), className)} {...props} />;56};5758export type ContextMenuSeparatorProps = React.ComponentProps<typeof BaseContextMenu.Separator>;5960export const ContextMenuSeparator = ({ className, ...props }: ContextMenuSeparatorProps) => {61// … truncated
What it pulls in
npm packages
Files it writes
More from adn-ui
All 46 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | adn-ui | Components | Free | 2 deps · 5 files | |
| Alert Dialogalert-dialog | adn-ui | Components | Free | 2 deps · 5 files | |
| Aspect Ratioaspect-ratio | adn-ui | Components | Free | 1 dep · 5 files | |
| Autocompleteautocomplete | adn-ui | Components | Free | 2 deps · 5 files | |
| Avataravatar | adn-ui | Components | Free | 2 deps · 5 files | |
| Badgebadge | adn-ui | Components | Free | 1 dep · 5 files | |
| Breadcrumbbreadcrumb | adn-ui | Components | Free | 1 dep · 5 files | |
| Buttonbutton | adn-ui | Components | Free | 1 dep · 4 files |
