import { PopoverContentProps, Root } from '@radix-ui/react-popover';
import { AllHTMLAttributes, ReactNode, CSSProperties, ComponentProps } from 'react';
import { PaperProps } from '../Paper/Paper.types.js';
import { Elevations } from '../Paper/Paper.constants.js';
import '../constants-QFINMz1u.js';

type CombinedRefs = {
    container: HTMLDivElement | null;
    content: HTMLDivElement | null;
    trigger: HTMLElement | null;
};
interface PopoverProps extends Omit<AllHTMLAttributes<HTMLDivElement>, 'title'> {
    children: ReactNode;
    align?: PopoverContentProps['align'];
    closeButtonLabel?: string;
    disabled?: boolean;
    elevation?: `${Elevations}`;
    fullWidth?: boolean;
    modal?: boolean;
    open?: boolean;
    paper?: Partial<PaperProps>;
    popover?: Partial<{
        className?: string;
        style?: CSSProperties;
    } & Omit<PopoverContentProps, 'align' | 'asChild' | 'onInteractOutside' | 'side'>>;
    side?: PopoverContentProps['side'];
    title?: string;
    toggleOnTriggerClick?: boolean;
    toggleOnTriggerHover?: boolean;
    trigger?: ReactNode;
    triggerAsButton?: boolean;
    width?: number | string | 'auto' | 'fit' | 'full' | 'trigger';
    withArrow?: boolean;
    withCloseButton?: boolean;
    withScroll?: boolean;
    onClose?: () => void;
    onCloseButtonClick?: () => void;
    onInteractOutside?: PopoverContentProps['onInteractOutside'];
    onOpen?: () => void;
    onOpenChange?: ComponentProps<typeof Root>['onOpenChange'];
}

export type { CombinedRefs, PopoverProps };
