import { PropsOf } from "../utils/types.js";
import "../utils/index.js";
import { ThemingProps } from "../theme/types.js";
import { SystemProps } from "../system/system.js";
import "../system/index.js";
import { BoxProps } from "../box/box.types.js";
import "../box/index.js";
import { IconProp, IconProps } from "../icon/icon.types.js";
import "../icon/index.js";
import { ButtonProps, IconButtonProps } from "../button/button.types.js";
import "../button/index.js";
import { HeadingProps } from "../heading/heading.types.js";
import "../heading/index.js";
import { ModalProps } from "../modal/modal.types.js";
import "../modal/index.js";
import { JSX } from "react";

//#region src/dialog/dialog.types.d.ts
type DialogBodyProps = PropsOf<'div', BoxProps>;
type DialogCancelButtonProps = PropsOf<'button', ButtonProps>;
type DialogCloseButtonProps = PropsOf<'button', IconButtonProps>;
type DialogContext = Pick<DialogProps, 'icon' | 'isOpen' | 'onClose' | 'size' | 'status' | 'variant'> & {
  bodyId?: string;
  titleId?: string;
};
type DialogFooterProps = PropsOf<'div', BoxProps & Pick<DialogProps, 'cancelButton' | 'submitButton'>>;
type DialogHeaderProps = PropsOf<'div', BoxProps & Pick<DialogProps, 'closeButton' | 'icon' | 'title'>>;
type DialogIconProps = PropsOf<'svg', IconProps>;
type DialogPlacement = 'left' | 'center' | 'right';
type DialogProps = SystemProps & ThemingProps<'Dialog'> & Pick<ModalProps, 'isOpen' | 'onClose'> & {
  /** Socket for the main Dialog content. */
  body?: string | number | DialogBodyProps | JSX.Element;
  /** Socket for a cancel button in the Dialog Footer. */
  cancelButton?: DialogCancelButtonProps | JSX.Element;
  /** Socket for a close icon button in the Dialog Header. */
  closeButton?: boolean | DialogCloseButtonProps | JSX.Element;
  /** Clicking Backdrop element will not trigger 'onClose'. */
  disableBackdropClose?: boolean;
  /** Socket for a footer with buttons below Dialog Body. */
  footer?: DialogFooterProps | JSX.Element;
  /** Socket for a header with title and icon above the Dialog Body */
  header?: DialogHeaderProps | JSX.Element;
  /** Socket for a custom icon in the Dialog Header. */
  icon?: IconProp | DialogIconProps | JSX.Element;
  /** The props being passed into the internal Modal component. */
  modalProps?: ModalProps;
  /** Position of the dialog @default center */
  placement?: DialogPlacement;
  /** Adds an icon for a given status, such as error or warning. */
  status?: DialogStatus;
  /** Socket for a submit button in the Dialog Footer. */
  submitButton?: DialogSubmitButtonProps | JSX.Element;
  /** Socket for a title in the Dialog Header. */
  title?: HeadingProps['text'] | DialogTitleProps | JSX.Element;
};
type DialogStatus = 'danger' | 'error' | 'info' | 'warning';
type DialogStatusMapping = Record<string, {
  iconProps: IconProps;
}>;
type DialogSubmitButtonProps = PropsOf<'button', ButtonProps>;
type DialogTitleProps = PropsOf<'h4', HeadingProps>;
//#endregion
export { DialogBodyProps, DialogCancelButtonProps, DialogCloseButtonProps, DialogContext, DialogFooterProps, DialogHeaderProps, DialogIconProps, DialogPlacement, DialogProps, DialogStatus, DialogStatusMapping, DialogSubmitButtonProps, DialogTitleProps };

//# sourceMappingURL=dialog.types.d.ts.map