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; };