import * as React from "react"; import { ContextMenu as ContextMenuPrimitive } from "@base-ui-components/react/context-menu"; import { cn } from "../utils"; export interface ContextMenuProps extends React.ComponentProps { children: React.ReactNode; } export interface ContextMenuTriggerProps extends React.ComponentProps { children: React.ReactNode; className?: string; } export interface ContextMenuContentProps extends React.ComponentProps { children: React.ReactNode; className?: string; side?: "top" | "right" | "bottom" | "left"; sideOffset?: number; positionerClassName?: string; } export interface ContextMenuItemProps extends React.ComponentProps { children: React.ReactNode; className?: string; disabled?: boolean; } const ContextMenuRoot = React.forwardRef(function ContextMenuRoot( { children, ...props }: ContextMenuProps, _ref: React.ForwardedRef> ) { return {children}; }); const ContextMenuTrigger = React.forwardRef(function ContextMenuTrigger( { className, children, ...props }: ContextMenuTriggerProps, ref: React.ForwardedRef> ) { return ( {children} ); }); const ContextMenuPortal = ContextMenuPrimitive.Portal; const ContextMenuContent = React.forwardRef(function ContextMenuContent( { positionerClassName, className, children, side = "bottom", sideOffset = 4, ...props }: ContextMenuContentProps, ref: React.ForwardedRef> ) { return ( {children} ); }); const ContextMenuItem = React.forwardRef(function ContextMenuItem( { className, disabled, children, ...props }: ContextMenuItemProps, ref: React.ForwardedRef> ) { return ( {children} ); }); const ContextMenuSeparator = React.forwardRef(function ContextMenuSeparator( { className, ...props }: React.ComponentProps, ref: React.ForwardedRef> ) { return ( ); }); const ContextMenuSubmenu = ContextMenuPrimitive.SubmenuRoot; const ContextMenuSubmenuTrigger = React.forwardRef(function ContextMenuSubmenuTrigger( { className, children, ...props }: React.ComponentProps, ref: React.ForwardedRef> ) { return ( {children} ); }); ContextMenuRoot.displayName = "ContextMenu"; ContextMenuTrigger.displayName = "ContextMenuTrigger"; ContextMenuContent.displayName = "ContextMenuContent"; ContextMenuItem.displayName = "ContextMenuItem"; ContextMenuSeparator.displayName = "ContextMenuSeparator"; ContextMenuSubmenuTrigger.displayName = "ContextMenuSubmenuTrigger"; // compound components const ContextMenu = Object.assign(ContextMenuRoot, { Trigger: ContextMenuTrigger, Portal: ContextMenuPortal, Content: ContextMenuContent, Item: ContextMenuItem, Separator: ContextMenuSeparator, Submenu: ContextMenuSubmenu, SubmenuTrigger: ContextMenuSubmenuTrigger, }); export { ContextMenu };