import { CSSProperties, HTMLAttributes, ReactNode } from 'react';
import { SnackbarProviderProps as BaseSnackbarProviderProps, OptionsObject } from 'notistack';
import { QA } from '../common';
import { ButtonProps } from '../Button';
import { LinkProps } from '../Link';
/** Пропсы провайдера notistack */
export type SnackbarProviderProps = BaseSnackbarProviderProps;
/** Вариант дизайна Snackbar */
export declare enum SnackbarVariant {
/** Без границы и иконки */
Default = "default",
/** Зеленая граница и иконка */
Success = "success",
/** Желтая граница и иконка */
Warning = "warning",
/** Красная граница и иконка */
Error = "error"
}
/** Кнопки в сообщении
*
* Передаются кнопки(isButton), ссылки(isLink), или кастомный элемент
*/
export type SnackbarAction = ({
isButton: true;
} & ButtonProps) | ({
isLink: true;
} & LinkProps) | ReactNode;
/** Всплывающее сообщение */
export type SnackbarMessage = {
/** Контент */
content: ReactNode;
/** Заголовок */
title?: ReactNode;
/** Кастомная иконка */
icon?: ReactNode;
/** Вариант */
variant?: SnackbarVariant | `${SnackbarVariant}`;
/** С возможностью закрытия (показывать крестик) */
closable?: boolean;
/** Кнопки сверху справа */
actionsTop?: SnackbarAction[];
/** Кнопки снизу */
actionsBottom?: SnackbarAction[];
} & QA & Omit & Pick & Pick, 'style' | 'className'>;
export type SnackbarMessageInner = Omit & Required>;
export type SnackbarContentProps = {
message: SnackbarMessageInner;
};