import React, { ReactNode } from "react";
import { ContextMenuTheme } from "./ContextMenu.theme";
export interface ContextMenuContextValue {
    isOpen: boolean;
    onOpenChange: (isOpen: boolean) => void;
    cursorPosition: {
        x: number;
        y: number;
    } | null;
    contentRef: React.RefObject<HTMLDivElement | null>;
    triggerRef: React.RefObject<HTMLElement | null>;
    theme: ContextMenuTheme;
}
export interface SubMenuContextValue {
    isOpen: boolean;
    onOpenChange: (isOpen: boolean) => void;
    triggerRef: React.RefObject<HTMLDivElement | null>;
}
export interface ContextMenuProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    onOpenChange?: (isOpen: boolean) => void;
    theme?: Partial<ContextMenuTheme>;
}
export interface ContextMenuTriggerProps {
    children: React.ReactElement;
    className?: string;
    disabled?: boolean;
}
export interface ContextMenuBodyProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    className?: string;
    animation?: boolean;
    "aria-label"?: string;
}
export interface ContextMenuItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
    children: ReactNode;
    className?: string;
    checked?: boolean;
    disabled?: boolean;
    isDanger?: boolean;
    shortcut?: ReactNode;
    onSelect?: () => void;
    startContent?: ReactNode;
    endContent?: ReactNode;
    subtitle?: string;
}
export interface ContextMenuSubProps {
    children: ReactNode;
    className?: string;
}
export interface ContextMenuSubTriggerProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    className?: string;
    disabled?: boolean;
}
export interface ContextMenuSubBodyProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    className?: string;
    animation?: boolean;
}
export interface ContextMenuSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
    className?: string;
}
export interface ContextMenuLabelProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    className?: string;
}
/**
 * Theme overrides for the ContextMenu component
 */
export interface ContextMenuThemeOverrides {
    /** Content container style */
    contentStyle?: string;
    /** Item base style */
    itemStyle?: string;
    /** Checked item style (for tick icon positioning) */
    itemCheckedStyle?: string;
    /** Sub trigger style */
    subTriggerStyle?: string;
    /** Sub content style */
    subContentStyle?: string;
    /** Separator style */
    separatorStyle?: string;
    /** Label style */
    labelStyle?: string;
}
