moduix

Context Menu

A menu that appears at the pointer on right click or long press.

API Reference

Original primitive API

Behavior, accessibility details, and low-level props are documented by Base UI.

Base UI API

Basic

Right click here
import {  ContextMenu,  ContextMenuArrow,  ContextMenuContent,  ContextMenuItem,  ContextMenuSeparator,  ContextMenuTrigger,} from "moduix";export function ContextMenuDemo() {  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuArrow />        <ContextMenuItem closeOnClick>Add to Library</ContextMenuItem>        <ContextMenuItem closeOnClick>Add to Playlist</ContextMenuItem>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick>Play Next</ContextMenuItem>        <ContextMenuItem closeOnClick>Play Last</ContextMenuItem>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick disabled>          Share        </ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}

Full list of component variables available for project-level overrides.

PropertyDefaultDescription
--context-menu-arrow-inline-offset0.8125remControls inline arrow offset for side placement.
--context-menu-arrow-size0.5remControls popup arrow size.
--context-menu-arrow-stroke-colorvar(--context-menu-popup-border-color)Controls popup arrow stroke color.
--context-menu-backdrop-bgvar(--backdrop-bg, transparent)Controls optional backdrop background.
--context-menu-backdrop-blur0Controls optional backdrop blur amount.
--context-menu-backdrop-transitionvar(--context-menu-transition)Controls optional backdrop transition.
--context-menu-check-gap0.5remControls gap between indicator and item text in radio/checkbox items.
--context-menu-check-icon-size100%Controls icon size inside check indicators.
--context-menu-check-indicator-bgtransparentControls indicator background for radio/checkbox items.
--context-menu-check-indicator-border-colortransparentControls indicator border color for radio/checkbox items.
--context-menu-check-indicator-border-widthvar(--border-width-sm)Controls indicator border width for radio/checkbox items.
--context-menu-check-indicator-colorcurrentColorControls indicator icon color for radio/checkbox items.
--context-menu-check-indicator-padding0Controls indicator inner padding for radio/checkbox items.
--context-menu-check-indicator-radiusvar(--radius-xs)Controls indicator corner radius for radio/checkbox items.
--context-menu-check-indicator-size0.75remControls indicator size for radio/checkbox items.
--context-menu-check-padding-x-start0.625remControls start padding for radio/checkbox items.
--context-menu-disabled-opacityvar(--opacity-disabled)Controls disabled trigger opacity.
--context-menu-focus-ring-colorvar(--color-ring)Controls trigger focus ring color.
--context-menu-group-label-colorvar(--color-muted-foreground)Controls group label text color.
--context-menu-group-label-font-sizevar(--text-xs)Controls group label font size.
--context-menu-group-label-line-heightvar(--line-height-text-xs)Controls group label line height.
--context-menu-group-label-padding-x-end0.75remControls group label end padding.
--context-menu-group-label-padding-x-start0.625remControls group label start padding.
--context-menu-group-label-padding-y0.35remControls group label vertical padding.
--context-menu-group-padding-y0Controls group vertical padding.
--context-menu-highlight-bgvar(--color-foreground)Controls highlighted item background.
--context-menu-highlight-colorvar(--color-background)Controls highlighted item text color.
--context-menu-highlight-inset-xvar(--spacing-1)Controls horizontal inset for highlighted/open row background.
--context-menu-highlight-radiusvar(--radius-sm)Controls highlighted/open row radius.
--context-menu-item-bgtransparentControls base background of menu rows.
--context-menu-item-disabled-colorvar(--color-muted-foreground)Controls disabled item text color.
--context-menu-item-font-sizevar(--text-sm)Controls item font size.
--context-menu-item-gapvar(--spacing-2)Controls gap for regular item content.
--context-menu-item-height2remControls minimum row height.
--context-menu-item-line-heightvar(--line-height-text-sm)Controls item line height.
--context-menu-item-padding-x-end1remControls item end padding.
--context-menu-item-padding-x-start1remControls item start padding.
--context-menu-item-padding-y0.5remControls item vertical padding.
--context-menu-item-shortcut-colorvar(--color-muted-foreground)Controls shortcut text color.
--context-menu-item-shortcut-font-sizevar(--text-xs)Controls shortcut font size.
--context-menu-item-shortcut-line-heightvar(--line-height-text-xs)Controls shortcut line height.
--context-menu-item-shortcut-padding-x-startvar(--spacing-4)Controls start spacing before shortcut text.
--context-menu-item-text-content-gapvar(--spacing-2)Controls gap inside `ContextMenuItemTextContent`.
--context-menu-item-text-icon-colorcurrentColorControls color of `ContextMenuItemTextIcon`.
--context-menu-item-text-icon-size1remControls size of `ContextMenuItemTextIcon`.
--context-menu-popup-bgvar(--color-popover)Controls popup background.
--context-menu-popup-border-colorvar(--color-border)Controls popup border color.
--context-menu-popup-colorvar(--color-popover-foreground)Controls popup text color.
--context-menu-popup-max-height24remControls popup maximum height.
--context-menu-popup-max-width20remControls popup maximum width.
--context-menu-popup-min-width12remControls popup minimum width.
--context-menu-popup-padding-y0.25remControls popup vertical padding.
--context-menu-popup-radiusvar(--radius-md)Controls popup corner radius.
--context-menu-popup-scalevar(--scale-popup)Controls popup start/end animation scale.
--context-menu-popup-shadowvar(--shadow-lg)Controls popup shadow.
--context-menu-separator-colorvar(--color-border)Controls separator color.
--context-menu-separator-margin-x-end1remControls separator end margin.
--context-menu-separator-margin-x-start1remControls separator start margin.
--context-menu-separator-margin-y0.375remControls separator vertical margin.
--context-menu-submenu-icon-size0.875remControls submenu trigger icon size.
--context-menu-submenu-open-bgvar(--color-accent)Controls submenu trigger open background.
--context-menu-submenu-trigger-gapvar(--spacing-3)Controls submenu trigger content gap.
--context-menu-submenu-trigger-padding-x-end1remControls submenu trigger end padding.
--context-menu-transitionvar(--transition-default)Controls shared transition timing.
--context-menu-trigger-bgvar(--color-background)Controls trigger background.
--context-menu-trigger-bg-activevar(--context-menu-trigger-bg-hover)Controls trigger active/open background.
--context-menu-trigger-bg-hovervar(--color-accent)Controls trigger hover background.
--context-menu-trigger-border-colorvar(--color-border)Controls trigger border color.
--context-menu-trigger-border-widthvar(--border-width-sm)Controls trigger border width.
--context-menu-trigger-colorvar(--color-foreground)Controls trigger text color.
--context-menu-trigger-font-sizevar(--text-md)Controls trigger font size.
--context-menu-trigger-line-heightvar(--line-height-text-md)Controls trigger line height.
--context-menu-trigger-min-height12remControls trigger minimum height.
--context-menu-trigger-min-width15remControls trigger minimum width.
--context-menu-trigger-padding-x0.875remControls trigger horizontal padding.
--context-menu-trigger-padding-y0.5remControls trigger vertical padding.
--context-menu-trigger-radiusvar(--radius-md)Controls trigger corner radius.

Interactive variables scoped for docs preview without changing size scale tokens.

PropertyValueDefaultDescription
--context-menu-arrow-inline-offset0.8125remControls inline arrow offset for side placement.
--context-menu-arrow-size0.5remControls popup arrow size.
--context-menu-arrow-stroke-colorvar(--context-menu-popup-border-color)Controls popup arrow stroke color.
--context-menu-backdrop-bgvar(--backdrop-bg, transparent)Controls optional backdrop background.
--context-menu-backdrop-blur0Controls optional backdrop blur amount.
--context-menu-backdrop-transitionvar(--context-menu-transition)Controls optional backdrop transition.
--context-menu-check-gap0.5remControls gap between indicator and item text in radio/checkbox items.
--context-menu-check-icon-size100%Controls icon size inside check indicators.
--context-menu-check-indicator-bgtransparentControls indicator background for radio/checkbox items.
--context-menu-check-indicator-border-colortransparentControls indicator border color for radio/checkbox items.
--context-menu-check-indicator-border-widthvar(--border-width-sm)Controls indicator border width for radio/checkbox items.
--context-menu-check-indicator-colorcurrentColorControls indicator icon color for radio/checkbox items.
--context-menu-check-indicator-padding0Controls indicator inner padding for radio/checkbox items.
--context-menu-check-indicator-radiusvar(--radius-xs)Controls indicator corner radius for radio/checkbox items.
--context-menu-check-indicator-size0.75remControls indicator size for radio/checkbox items.
--context-menu-check-padding-x-start0.625remControls start padding for radio/checkbox items.
--context-menu-disabled-opacityvar(--opacity-disabled)Controls disabled trigger opacity.
--context-menu-focus-ring-colorvar(--color-ring)Controls trigger focus ring color.
--context-menu-group-label-colorvar(--color-muted-foreground)Controls group label text color.
--context-menu-group-label-font-sizevar(--text-xs)Controls group label font size.
--context-menu-group-label-line-heightvar(--line-height-text-xs)Controls group label line height.
--context-menu-group-label-padding-x-end0.75remControls group label end padding.
--context-menu-group-label-padding-x-start0.625remControls group label start padding.
--context-menu-group-label-padding-y0.35remControls group label vertical padding.
--context-menu-group-padding-y0Controls group vertical padding.
--context-menu-highlight-bgvar(--color-foreground)Controls highlighted item background.
--context-menu-highlight-colorvar(--color-background)Controls highlighted item text color.
--context-menu-highlight-inset-xvar(--spacing-1)Controls horizontal inset for highlighted/open row background.
--context-menu-highlight-radiusvar(--radius-sm)Controls highlighted/open row radius.
--context-menu-item-bgtransparentControls base background of menu rows.
--context-menu-item-disabled-colorvar(--color-muted-foreground)Controls disabled item text color.
--context-menu-item-font-sizevar(--text-sm)Controls item font size.
--context-menu-item-gapvar(--spacing-2)Controls gap for regular item content.
--context-menu-item-height2remControls minimum row height.
--context-menu-item-line-heightvar(--line-height-text-sm)Controls item line height.
--context-menu-item-padding-x-end1remControls item end padding.
--context-menu-item-padding-x-start1remControls item start padding.
--context-menu-item-padding-y0.5remControls item vertical padding.
--context-menu-item-shortcut-colorvar(--color-muted-foreground)Controls shortcut text color.
--context-menu-item-shortcut-font-sizevar(--text-xs)Controls shortcut font size.
--context-menu-item-shortcut-line-heightvar(--line-height-text-xs)Controls shortcut line height.
--context-menu-item-shortcut-padding-x-startvar(--spacing-4)Controls start spacing before shortcut text.
--context-menu-item-text-content-gapvar(--spacing-2)Controls gap inside `ContextMenuItemTextContent`.
--context-menu-item-text-icon-colorcurrentColorControls color of `ContextMenuItemTextIcon`.
--context-menu-item-text-icon-size1remControls size of `ContextMenuItemTextIcon`.
--context-menu-popup-bgvar(--color-popover)Controls popup background.
--context-menu-popup-border-colorvar(--color-border)Controls popup border color.
--context-menu-popup-colorvar(--color-popover-foreground)Controls popup text color.
--context-menu-popup-max-height24remControls popup maximum height.
--context-menu-popup-max-width20remControls popup maximum width.
--context-menu-popup-min-width12remControls popup minimum width.
--context-menu-popup-padding-y0.25remControls popup vertical padding.
--context-menu-popup-radiusvar(--radius-md)Controls popup corner radius.
--context-menu-popup-scalevar(--scale-popup)Controls popup start/end animation scale.
--context-menu-popup-shadowvar(--shadow-lg)Controls popup shadow.
--context-menu-separator-colorvar(--color-border)Controls separator color.
--context-menu-separator-margin-x-end1remControls separator end margin.
--context-menu-separator-margin-x-start1remControls separator start margin.
--context-menu-separator-margin-y0.375remControls separator vertical margin.
--context-menu-submenu-icon-size0.875remControls submenu trigger icon size.
--context-menu-submenu-open-bgvar(--color-accent)Controls submenu trigger open background.
--context-menu-submenu-trigger-gapvar(--spacing-3)Controls submenu trigger content gap.
--context-menu-submenu-trigger-padding-x-end1remControls submenu trigger end padding.
--context-menu-transitionvar(--transition-default)Controls shared transition timing.
--context-menu-trigger-bgvar(--color-background)Controls trigger background.
--context-menu-trigger-bg-activevar(--context-menu-trigger-bg-hover)Controls trigger active/open background.
--context-menu-trigger-bg-hovervar(--color-accent)Controls trigger hover background.
--context-menu-trigger-border-colorvar(--color-border)Controls trigger border color.
--context-menu-trigger-border-widthvar(--border-width-sm)Controls trigger border width.
--context-menu-trigger-colorvar(--color-foreground)Controls trigger text color.
--context-menu-trigger-font-sizevar(--text-md)Controls trigger font size.
--context-menu-trigger-line-heightvar(--line-height-text-md)Controls trigger line height.
--context-menu-trigger-min-height12remControls trigger minimum height.
--context-menu-trigger-min-width15remControls trigger minimum width.
--context-menu-trigger-padding-x0.875remControls trigger horizontal padding.
--context-menu-trigger-padding-y0.5remControls trigger vertical padding.
--context-menu-trigger-radiusvar(--radius-md)Controls trigger corner radius.

Anatomy

Context menu is composed from a trigger surface and a popup content layer. Keep interactive parts inside ContextMenuContent so keyboard navigation, roving focus, and close behavior stay managed by the root state machine.

ContextMenu
├─ ContextMenuTrigger
└─ ContextMenuContent
   ├─ ContextMenuArrow
   ├─ ContextMenuItem
   ├─ ContextMenuSeparator
   └─ ContextMenuSubmenu
      ├─ ContextMenuSubmenuTrigger
      │  └─ ContextMenuSubmenuTriggerIcon
      └─ ContextMenuSubmenuContent
         └─ ContextMenuItem
<ContextMenu>
  <ContextMenuTrigger>Right click here</ContextMenuTrigger>
  <ContextMenuContent>
    <ContextMenuArrow />
    <ContextMenuItem closeOnClick>Open</ContextMenuItem>
    <ContextMenuSubmenu>
      <ContextMenuSubmenuTrigger>
        Share
        <ContextMenuSubmenuTriggerIcon />
      </ContextMenuSubmenuTrigger>
      <ContextMenuSubmenuContent>
        <ContextMenuItem closeOnClick>Copy link</ContextMenuItem>
      </ContextMenuSubmenuContent>
    </ContextMenuSubmenu>
  </ContextMenuContent>
</ContextMenu>
PartRole
ContextMenuRoot state machine. Handles open state, focus management, and close interactions.
ContextMenuTriggerSurface that opens the menu on context interaction (right click or long press).
ContextMenuContentPopup container for menu items. Accepts positioning props and renders service layers internally.
ContextMenuArrowOptional visual pointer from popup to trigger location.
ContextMenuItemAction row. Supports disabled state and closeOnClick behavior.
ContextMenuLinkItemLink row for navigation while preserving context menu focus and highlight behavior.
ContextMenuSeparatorVisual divider between related item groups.
ContextMenuSubmenu*Nested branch for secondary actions (Trigger, TriggerIcon, and Content).
ContextMenuGroup* / controlsOptional structured controls: labels, radio groups/items, checkbox items, and related indicator slots.

ContextMenuContent uses internal service slots (portal, optional backdrop, positioner, popup). In most cases, keep the default structure and style visible parts such as trigger, items, separators, and arrow. Use classNames, portalProps, positionerProps, backdropProps, and withBackdrop when you need slot-level customization.

Composition

Pass positioning props such as sideOffset, align, collisionPadding, and positionMethod directly to ContextMenuContent.

className styles the visible popup. classNames styles the internal service slots hidden from the default composition. Use container, portalProps, backdropProps, positionerProps, and withBackdrop when you need the matching Base UI escape hatches:

<ContextMenuContent
  className={styles.popup}
  classNames={{
    portal: styles.portal,
    backdrop: styles.backdrop,
    positioner: styles.positioner,
  }}
  withBackdrop
/>

Examples

Nested

Use ContextMenuSubmenu with ContextMenuSubmenuTrigger and ContextMenuSubmenuContent for nested actions.

Right click here
import {  ContextMenu,  ContextMenuArrow,  ContextMenuContent,  ContextMenuItem,  ContextMenuSeparator,  ContextMenuSubmenu,  ContextMenuSubmenuContent,  ContextMenuSubmenuTrigger,  ContextMenuSubmenuTriggerIcon,  ContextMenuTrigger,} from "moduix";export function NestedContextMenuDemo() {  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuArrow />        <ContextMenuItem closeOnClick>Add to Library</ContextMenuItem>        <ContextMenuSubmenu>          <ContextMenuSubmenuTrigger>            Add to Playlist            <ContextMenuSubmenuTriggerIcon />          </ContextMenuSubmenuTrigger>          <ContextMenuSubmenuContent>            <ContextMenuItem closeOnClick>Get Up!</ContextMenuItem>            <ContextMenuItem closeOnClick>Inside Out</ContextMenuItem>            <ContextMenuItem closeOnClick>Night Beats</ContextMenuItem>            <ContextMenuSeparator />            <ContextMenuItem closeOnClick>New Playlist...</ContextMenuItem>          </ContextMenuSubmenuContent>        </ContextMenuSubmenu>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick>Favorite</ContextMenuItem>        <ContextMenuItem closeOnClick>Share</ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}

Shortcuts

Use ContextMenuItemShortcut for keyboard shortcut text instead of reserving extra item padding.

Right click here
import {  ContextMenu,  ContextMenuArrow,  ContextMenuContent,  ContextMenuItem,  ContextMenuItemShortcut,  ContextMenuSeparator,  ContextMenuTrigger,} from "moduix";export function ShortcutsContextMenuDemo() {  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuArrow />        <ContextMenuItem closeOnClick>          Copy          <ContextMenuItemShortcut>Ctrl+C</ContextMenuItemShortcut>        </ContextMenuItem>        <ContextMenuItem closeOnClick>          Paste          <ContextMenuItemShortcut>Ctrl+V</ContextMenuItemShortcut>        </ContextMenuItem>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick>          Rename          <ContextMenuItemShortcut>F2</ContextMenuItemShortcut>        </ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}

Groups And Controls

Use groups, radio items, and checkbox items when the menu changes application state.

Right click here
import { useState } from "react";import {  ContextMenu,  ContextMenuArrow,  ContextMenuCheckboxItem,  ContextMenuCheckboxItemIndicator,  ContextMenuContent,  ContextMenuGroup,  ContextMenuGroupLabel,  ContextMenuItemText,  ContextMenuRadioGroup,  ContextMenuRadioItem,  ContextMenuRadioItemIndicator,  ContextMenuSeparator,  ContextMenuTrigger,} from "moduix";export function GroupsAndControlsContextMenuDemo() {  const [sortBy, setSortBy] = useState("date");  const [showMinimap, setShowMinimap] = useState(true);  const [showSearch, setShowSearch] = useState(true);  const [showSidebar, setShowSidebar] = useState(false);  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuArrow />        <ContextMenuGroup>          <ContextMenuGroupLabel>Sort</ContextMenuGroupLabel>          <ContextMenuRadioGroup value={sortBy} onValueChange={setSortBy}>            <ContextMenuRadioItem value="date">              <ContextMenuRadioItemIndicator />              <ContextMenuItemText>Date</ContextMenuItemText>            </ContextMenuRadioItem>            <ContextMenuRadioItem value="name">              <ContextMenuRadioItemIndicator />              <ContextMenuItemText>Name</ContextMenuItemText>            </ContextMenuRadioItem>            <ContextMenuRadioItem value="type">              <ContextMenuRadioItemIndicator />              <ContextMenuItemText>Type</ContextMenuItemText>            </ContextMenuRadioItem>          </ContextMenuRadioGroup>        </ContextMenuGroup>        <ContextMenuSeparator />        <ContextMenuGroup>          <ContextMenuGroupLabel>Workspace</ContextMenuGroupLabel>          <ContextMenuCheckboxItem checked={showMinimap} onCheckedChange={setShowMinimap}>            <ContextMenuCheckboxItemIndicator />            <ContextMenuItemText>Minimap</ContextMenuItemText>          </ContextMenuCheckboxItem>          <ContextMenuCheckboxItem checked={showSearch} onCheckedChange={setShowSearch}>            <ContextMenuCheckboxItemIndicator />            <ContextMenuItemText>Search</ContextMenuItemText>          </ContextMenuCheckboxItem>          <ContextMenuCheckboxItem checked={showSidebar} onCheckedChange={setShowSidebar}>            <ContextMenuCheckboxItemIndicator />            <ContextMenuItemText>Sidebar</ContextMenuItemText>          </ContextMenuCheckboxItem>        </ContextMenuGroup>      </ContextMenuContent>    </ContextMenu>  );}

Indicator Right With Icon

Use indicator="end" to align checkbox and radio indicators to the end. Item text slots and icon slots accept custom content and className.

Right click here
import { useState } from "react";import {  ContextMenu,  ContextMenuArrow,  ContextMenuCheckboxItem,  ContextMenuCheckboxItemIndicator,  ContextMenuContent,  ContextMenuItemText,  ContextMenuItemTextContent,  ContextMenuItemTextIcon,  ContextMenuItemTextLabel,  ContextMenuTrigger,  InfoIcon,  ShareIcon,} from "moduix";export function IndicatorRightContextMenuDemo() {  const [showMinimap, setShowMinimap] = useState(true);  const [showSearch, setShowSearch] = useState(true);  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuArrow />        <ContextMenuCheckboxItem          checked={showMinimap}          onCheckedChange={setShowMinimap}          indicator="end"        >          <ContextMenuItemText>            <ContextMenuItemTextContent>              <ContextMenuItemTextIcon>                <InfoIcon />              </ContextMenuItemTextIcon>              <ContextMenuItemTextLabel>Minimap</ContextMenuItemTextLabel>            </ContextMenuItemTextContent>          </ContextMenuItemText>          <ContextMenuCheckboxItemIndicator />        </ContextMenuCheckboxItem>        <ContextMenuCheckboxItem          checked={showSearch}          onCheckedChange={setShowSearch}          indicator="end"        >          <ContextMenuItemText>            <ContextMenuItemTextContent>              <ContextMenuItemTextIcon>                <ShareIcon />              </ContextMenuItemTextIcon>              <ContextMenuItemTextLabel>Search</ContextMenuItemTextLabel>            </ContextMenuItemTextContent>          </ContextMenuItemText>          <ContextMenuCheckboxItemIndicator />        </ContextMenuCheckboxItem>      </ContextMenuContent>    </ContextMenu>  );}

Positioning

Pass positioning props to ContextMenuContent. It renders the portal and positioner internally.

Right click here
import {  ContextMenu,  ContextMenuArrow,  ContextMenuContent,  ContextMenuItem,  ContextMenuSeparator,  ContextMenuTrigger,} from "moduix";export function PositionedContextMenuDemo() {  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent align="start" sideOffset={12} collisionPadding={16}>        <ContextMenuArrow />        <ContextMenuItem closeOnClick>Open</ContextMenuItem>        <ContextMenuItem closeOnClick>Duplicate</ContextMenuItem>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick>Archive</ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}

Use ContextMenuLinkItem for navigation actions that should render as links.

Right click here
import {  ContextMenu,  ContextMenuArrow,  ContextMenuContent,  ContextMenuItem,  ContextMenuLinkItem,  ContextMenuSeparator,  ContextMenuTrigger,} from "moduix";export function LinkItemsContextMenuDemo() {  return (    <ContextMenu>      <ContextMenuTrigger>Right click here</ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuArrow />        <ContextMenuLinkItem href="#projects">Projects</ContextMenuLinkItem>        <ContextMenuLinkItem href="#teams">Teams</ContextMenuLinkItem>        <ContextMenuLinkItem href="#billing">Billing</ContextMenuLinkItem>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick>Copy Link</ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}

Custom Styles

Use className for the popup and classNames for internal service slots. Set withBackdrop when the menu should render a backdrop.

Right click card
import {  ContextMenu,  ContextMenuContent,  ContextMenuItem,  ContextMenuSeparator,  ContextMenuTrigger,} from "moduix";export function CustomStylesContextMenuDemo() {  return (    <ContextMenu>      <ContextMenuTrigger className={styles.customTrigger}>Right click card</ContextMenuTrigger>      <ContextMenuContent        className={styles.customPopup}        classNames={{          portal: styles.customPortal,          backdrop: styles.customBackdrop,          positioner: styles.customPositioner,        }}        withBackdrop      >        <ContextMenuItem closeOnClick>Open details</ContextMenuItem>        <ContextMenuItem closeOnClick>Copy link</ContextMenuItem>        <ContextMenuSeparator />        <ContextMenuItem closeOnClick disabled>          Delete        </ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}
.customTrigger {  min-width: 14rem;  min-height: 9rem;  border-color: var(--color-primary);  background:    linear-gradient(var(--color-background), var(--color-background)) padding-box,    linear-gradient(135deg, var(--color-primary), var(--color-ring)) border-box;}.customPortal {  position: relative;}.customBackdrop {  background-color: rgb(0 0 0 / 0.08);  backdrop-filter: blur(0.125rem);}.customPositioner {  z-index: var(--z-popup);}.customPopup {  --context-menu-popup-min-width: 13rem;  --context-menu-popup-bg: var(--color-background);  --context-menu-popup-border-color: var(--color-primary);  --context-menu-popup-shadow: var(--shadow-lg);  --context-menu-highlight-bg: var(--color-primary);  --context-menu-highlight-color: var(--color-primary-foreground);  --context-menu-separator-color: var(--color-primary);}

On this page