import React, { ReactNode } from "react";
import { PopoverTheme } from "./Popover.theme";
export type PopoverPlacement = "top" | "top-start" | "top-end" | "right" | "right-start" | "right-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end";
export type PopoverTriggerType = "click" | "hover";
export interface PopoverContextValue {
    isOpen: boolean;
    onOpenChange: (isOpen: boolean) => void;
    triggerRef: React.RefObject<HTMLElement | null>;
    contentRef: React.RefObject<HTMLDivElement | null>;
    placement: PopoverPlacement;
    offset: number;
    triggerType: PopoverTriggerType;
    closeOnClickOutside: boolean;
    closeOnEsc: boolean;
    preventClose: boolean;
    hasBackdrop: boolean;
    theme: PopoverTheme;
    contentId: string;
}
export interface PopoverRootProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    isOpen?: boolean;
    defaultIsOpen?: boolean;
    onOpenChange?: (isOpen: boolean) => void;
    placement?: PopoverPlacement;
    offset?: number;
    triggerType?: PopoverTriggerType;
    closeOnClickOutside?: boolean;
    closeOnEsc?: boolean;
    preventClose?: boolean;
    hasBackdrop?: boolean;
    theme?: Partial<PopoverTheme>;
    /**
     * Force dark mode styling for the component. Use when placing the component
     * on a dark background while the page is in light mode. This applies the
     * 'dark' class to the container, making text, borders, and other elements
     * use light colors for visibility.
     * @default false
     */
    darkMode?: boolean;
}
export interface PopoverTriggerProps {
    children: React.ReactElement;
    className?: string;
    [key: string]: unknown;
}
export interface PopoverBodyProps extends React.HTMLAttributes<HTMLDivElement> {
    children: ReactNode;
    animation?: boolean;
    portal?: boolean;
    /** Enable scroll support with viewport-aware max-height. Uses available
     *  space computed by the positioning hook, falling back to 400px. */
    scrollable?: boolean;
    /** Custom max-height when scrollable is true (e.g. "300px", "20rem").
     *  Overrides the default viewport-aware height. */
    maxHeight?: string;
}
/**
 * Theme overrides for the Popover component
 */
export interface PopoverThemeOverrides {
    /** Base style for the popover */
    baseStyle?: string;
    /** Body style for the popover */
    bodyStyle?: string;
}
