import { ThemingProps } from "../theme/types.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 { JSX, ReactNode } from "react";

//#region src/notification/notification.types.d.ts
type NotificationProps = Omit<BoxProps, 'size' | 'variant'> & ThemingProps<'Notification'> & {
  /** Socket displaying a button on the right. */
  action?: ReactNode;
  /** Available theme colors for this component. @deprecated */
  colorScheme?: 'blue' | 'green' | 'red' | 'yellow';
  /** Socket displaying an icon on the left. */
  icon?: IconProp | JSX.Element;
  /** When provided, displays a close button with this function as the callback. */
  onClose?: () => void;
  /** Modifies Notification style and content based on the given status. */
  status?: NotificationStatus;
  /** Object definition of styles and content for each status. */
  statusMapping?: NotificationStatusMapping;
  /** Socket displaying text in the middle. */
  text?: ReactNode;
  /** Socket displaying title in the middle. */
  title?: ReactNode;
};
type NotificationStatus = 'error' | 'info' | 'loading' | 'success' | 'warning' | 'bannerError' | 'bannerInfo' | 'bannerLoading' | 'bannerSuccess' | 'bannerWarning';
type NotificationVariant = 'subtleBlue' | 'subtleRed' | 'subtleYellow' | 'subtleGreen' | 'bannerBlue' | 'bannerRed' | 'bannerYellow' | 'bannerGreen';
type NotificationStatusMapping = Record<string, {
  iconProps: IconProps;
  variant?: NotificationProps['variant'];
}>;
//#endregion
export { NotificationProps, NotificationStatus, NotificationStatusMapping, NotificationVariant };

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