import { InputRadioGroupProps, InputRadioProps } from "../InputRadio/InputRadio.types.js";
import { PaperProps } from "../Paper/Paper.types.js";
import { DropdownMenuContentProps, DropdownMenuItem, DropdownMenuSubContentProps, Root, Sub, SubTrigger } from "@radix-ui/react-dropdown-menu";
import { AllHTMLAttributes, CSSProperties, ComponentProps, MouseEvent, ReactNode } from "react";

//#region src/components/Dropdown/Dropdown.types.d.ts
type CombinedRefs = {
  container: HTMLDivElement | null;
  dropdown: HTMLDivElement | null;
  trigger: HTMLButtonElement | null;
};
type SubDropdownCombinedRefs = {
  content: HTMLDivElement | null;
  trigger: HTMLDivElement | null;
};
interface DropdownProps extends Omit<AllHTMLAttributes<HTMLDivElement>, 'onClick'> {
  children: ReactNode;
  align?: DropdownMenuContentProps['align'];
  asSelect?: boolean;
  condensed?: boolean;
  defaultOpen?: boolean;
  disabled?: boolean;
  dropdown?: Partial<{
    className?: string;
    style?: CSSProperties;
  } & Omit<DropdownMenuContentProps, 'align' | 'asChild' | 'onInteractOutside' | 'side'>>;
  elevation?: PaperProps['elevation'];
  fullWidth?: boolean;
  open?: boolean;
  portalled?: boolean;
  rainbow?: boolean;
  side?: DropdownMenuContentProps['side'];
  toggleOnTriggerClick?: boolean;
  trigger?: ReactNode;
  triggerAsButton?: boolean;
  width?: number | string | 'auto' | 'fit' | 'full' | 'trigger';
  withIndicator?: boolean;
  withScroll?: boolean;
  onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
  onClose?: () => void;
  onInteractOutside?: DropdownMenuContentProps['onInteractOutside'];
  onMenuOpenChange?: ComponentProps<typeof Root>['onOpenChange'];
  onOpen?: () => void;
}
interface DropdownItemProps extends Omit<AllHTMLAttributes<HTMLAnchorElement> & ComponentProps<typeof DropdownMenuItem>, 'asChild' | 'label' | 'onClick' | 'onSelect'> {
  active?: boolean;
  children?: ReactNode;
  condensed?: boolean;
  disabled?: boolean;
  href?: string;
  icon?: ReactNode;
  label?: ReactNode;
  rainbow?: boolean;
  target?: HTMLAnchorElement['target'];
  value?: string;
  onClick?: ComponentProps<typeof DropdownMenuItem>['onSelect'];
  onSelect?: ComponentProps<typeof DropdownMenuItem>['onSelect'];
}
interface DropdownItemGroupProps extends Omit<AllHTMLAttributes<HTMLDivElement>, 'label'> {
  children: ReactNode;
  label: ReactNode;
  condensed?: boolean;
  disabled?: boolean;
  labelElement?: keyof HTMLElementTagNameMap;
  rainbow?: boolean;
}
interface SubDropdownProps extends Omit<AllHTMLAttributes<HTMLDivElement> & ComponentProps<typeof Sub>, 'asChild' | 'content' | 'onClick'> {
  children: ReactNode;
  condensed?: boolean;
  condensedItems?: boolean;
  content?: Partial<{
    className?: string;
    style?: CSSProperties;
  } & Omit<DropdownMenuSubContentProps, 'asChild' | 'onInteractOutside'>>;
  defaultOpen?: boolean;
  disabled?: boolean;
  icon?: ReactNode;
  open?: boolean;
  rainbow?: boolean;
  withIndicator?: boolean;
  withScroll?: boolean;
  onClick?: ComponentProps<typeof SubTrigger>['onSelect'];
  onClose?: () => void;
  onInteractOutside?: DropdownMenuSubContentProps['onInteractOutside'];
  onOpen?: () => void;
  onSubMenuOpenChange?: ComponentProps<typeof Sub>['onOpenChange'];
}
type DropdownRadioGroupProps = {
  condensed?: boolean;
  rainbow?: boolean;
} & Omit<InputRadioGroupProps, 'fullWidth' | 'orientation' | 'variant'>;
type DropdownRadioItemProps = {
  condensed?: boolean;
  rainbow?: boolean;
} & Omit<InputRadioProps, 'fullWidth'>;
type DropdownItemSeparatorProps = AllHTMLAttributes<HTMLDivElement>;
//#endregion
export { CombinedRefs, DropdownItemGroupProps, DropdownItemProps, DropdownItemSeparatorProps, DropdownProps, DropdownRadioGroupProps, DropdownRadioItemProps, SubDropdownCombinedRefs, SubDropdownProps };
//# sourceMappingURL=Dropdown.types.d.ts.map