import { ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react';
import { ButtonOrLinkElement, ButtonOrLinkProps } from '../atoms';
import { ComponentCSSPropType } from './tailwind';
export interface ExperimentalMegaMenuProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
    title: ReactNode;
    /** When set, the mega menu only appears when the trigger is hovered or clicked (depending on `triggerMode`). */
    trigger?: ReactElement;
    /**
     * When `trigger` is set, this determines how and where the mega menu appears:
     * - `popoverOnHover`: the mega menu appears in a popover when the trigger is hovered
     * - `popoverOnClick`: the mega menu appears in a popover when the trigger is clicked
     * - `expandOnClick`: the mega menu expands/collapses inline, below the trigger, when the trigger is clicked
     * @default "popoverOnHover"
     */
    triggerMode?: GroupConfig['triggerMode'];
    /**
     * If `triggerMode` is `expandOnClick`, this determines whether the mega menu is initially expanded.
     * @default false
     */
    defaultExpanded?: boolean;
    /** @default "full" */
    layout?: ComponentCSSPropType<'mega-menu', 'layout', 'full'>;
    /** @default false */
    hideTitles?: boolean;
}
export declare const ExperimentalMegaMenuRoot: import('react').ForwardRefExoticComponent<ExperimentalMegaMenuProps & import('react').RefAttributes<HTMLDivElement>>;
type GroupConfig = {
    /**
     * Whether multiple mega menus with a `trigger` can be open at once.
     * @default true
     */
    openMultiple?: boolean;
    /**
     * When `trigger` is set on a mega menu, this determines how and where it appears:
     * - `popoverOnHover`: the mega menu appears in a popover when the trigger is hovered
     * - `popoverOnClick`: the mega menu appears in a popover when the trigger is clicked
     * - `expandOnClick`: the mega menu expands/collapses inline, below the trigger, when the trigger is clicked
     * @default "popoverOnHover"
     */
    triggerMode?: 'popoverOnHover' | 'popoverOnClick' | 'expandOnClick';
};
export interface ExperimentalMegaMenuGroupProps extends GroupConfig {
    children: ReactNode;
}
export declare const ExperimentalMegaMenuGroup: {
    ({ children, ...config }: ExperimentalMegaMenuGroupProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
export declare namespace ExperimentalMegaMenuItemProps {
    interface BaseProps {
        title: ReactNode;
        description?: ReactNode;
        icon?: ReactNode | {
            icon: ReactNode;
            containerClassName?: string;
        };
        tag?: string | ReactNode;
    }
    type OmittedButtonOrLinkProps = 'title' | 'disabled';
    interface ButtonProps extends BaseProps, Omit<ButtonOrLinkProps.ButtonProps, OmittedButtonOrLinkProps> {
    }
    interface ExternalLinkProps extends BaseProps, Omit<ButtonOrLinkProps.ExternalLinkProps, OmittedButtonOrLinkProps> {
    }
    interface ClientLinkProps extends BaseProps, Omit<ButtonOrLinkProps.ClientLinkProps, OmittedButtonOrLinkProps> {
    }
}
export type ExperimentalMegaMenuItemProps = ExperimentalMegaMenuItemProps.ButtonProps | ExperimentalMegaMenuItemProps.ExternalLinkProps | ExperimentalMegaMenuItemProps.ClientLinkProps;
export declare const ExperimentalMegaMenuItem: import('react').ForwardRefExoticComponent<ExperimentalMegaMenuItemProps & import('react').RefAttributes<ButtonOrLinkElement>>;
export interface ExperimentalMegaMenuAsideProps extends Omit<ComponentPropsWithoutRef<'aside'>, 'title'> {
    title?: ReactNode;
}
export declare const ExperimentalMegaMenuAside: import('react').ForwardRefExoticComponent<ExperimentalMegaMenuAsideProps & import('react').RefAttributes<HTMLDivElement>>;
export {};
//# sourceMappingURL=MegaMenu.parts.d.ts.map