Context Menu
Right-click menu with items and submenus.
Installation
npx @noarka/cli add context-menuUsage
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger,} from "@noarka/ui";<ContextMenu> <ContextMenuTrigger className="flex h-32 items-center justify-center rounded-xl border border-dashed text-sm text-muted-foreground"> Right click me </ContextMenuTrigger> <ContextMenuContent> <ContextMenuItem>Copy</ContextMenuItem> <ContextMenuItem>Paste</ContextMenuItem> <ContextMenuSeparator /> <ContextMenuItem variant="destructive">Delete</ContextMenuItem> </ContextMenuContent></ContextMenu>Examples
With label
Head the menu with an account label.
With shortcuts
Hint at keyboard equivalents.
With submenu
Nest a submenu off any item trigger.
API reference
ContextMenu
| Prop | Type | Default |
|---|---|---|
openControlled open state. Use with onOpenChange. | boolean | - |
defaultOpenInitially open when uncontrolled. | boolean | false |
onOpenChangeCalled when the menu opens or closes. | (open: boolean) => void | - |
disabledIgnore user interaction. | boolean | false |
ContextMenuTrigger
| Prop | Type | Default |
|---|---|---|
childrenThe right-click area. Usually a dashed zone describing the gesture. | ReactNode | - |
classNameAdditional classes merged on the trigger area. | string | - |
ContextMenuContent
| Prop | Type | Default |
|---|---|---|
sidePreferred placement side. | "top" | "right" | "bottom" | "left" | - |
sideOffsetGap between cursor and panel. | number | 4 |
alignAlignment against the cursor point. | "start" | "center" | "end" | "start" |
alignOffsetOffset along the alignment axis. | number | - |
renderPolymorphic render prop. Use to render a custom element instead of the default panel. | ReactElement | ((props) => ReactNode) | - |
classNameAdditional classes merged with the default panel styles. | string | - |
ContextMenuItem
| Prop | Type | Default |
|---|---|---|
variantDestructive tints the item red. | "default" | "destructive" | "default" |
insetOffset content to align with labeled groups. | boolean | - |
onSelectBack-compat alias for onClick. The menu still closes on select unless closeOnClick is false. | (event) => void | - |
disabledDisable the item. | boolean | false |
renderPolymorphic render prop. | ReactElement | ((props) => ReactNode) | - |
classNameAdditional classes merged with the default item styles. | string | - |
ContextMenuLabel
| Prop | Type | Default |
|---|---|---|
insetOffset content to align with inset items. The label renders its own group, so it works directly inside content. | boolean | - |
classNameAdditional classes merged with the default label styles. | string | - |
ContextMenuSeparator
| Prop | Type | Default |
|---|---|---|
classNameAdditional classes merged with the default separator styles. | string | - |
ContextMenuShortcut
| Prop | Type | Default |
|---|---|---|
classNameAdditional classes merged with the shortcut hint styles. | string | - |
ContextMenuSubTrigger
| Prop | Type | Default |
|---|---|---|
insetOffset content to align with inset items. | boolean | - |
disabledDisable the submenu trigger. | boolean | false |
classNameAdditional classes merged with the default trigger styles. | string | - |