import { ToastContainer } from 'react-toastify';
import { styled } from '../../styled';
import { NotificationVariantTypes, notifyClassnames } from '../constants';
// используем дополнительный враппер,
// потому что styled для ToastContainer не умеет работать с theme внутри
// использовать бэм классы для стилизации пришлось,
// потому что react-toastify не предоставляет,
// достаточно контейнеров для стилизации через styled,
// к примеру добраться до прогресс бара можно только через цсс классы
export const Wrapper = styled.div `
  .${notifyClassnames.root} {
    margin-bottom: ${({ theme }) => theme.spacing(1)};
    padding: 0;

    border-radius: ${({ theme }) => theme.shape.medium};

    &::after {
      content: '';

      position: absolute;
      top: 0;
      left: 0;

      display: block;

      width: 100%;
      height: 3px;
    }

    .Toastify__progress-bar {
      opacity: 1;
    }

    &--${NotificationVariantTypes.Info} {
      --toastify-color-progress-light: ${({ theme }) => theme.palette.primary[800]};

      &::after {
        background-color: ${({ theme }) => theme.palette.primary[100]};
      }
    }
    &--${NotificationVariantTypes.Success} {
      --toastify-color-progress-light: ${({ theme }) => theme.palette.success[800]};

      &::after {
        background-color: ${({ theme }) => theme.palette.success.light};
      }
    }
    &--${NotificationVariantTypes.Warning} {
      --toastify-color-progress-light: ${({ theme }) => theme.palette.warning[800]};

      &::after {
        background-color: ${({ theme }) => theme.palette.warning.light};
      }
    }
    &--${NotificationVariantTypes.Error} {
      --toastify-color-progress-light: ${({ theme }) => theme.palette.error[800]};

      &::after {
        background-color: ${({ theme }) => theme.palette.error.light};
      }
    }

    &__body {
      margin: 0;
      padding: 0;
    }

    &__progress {
      top: 0;
      bottom: auto;

      height: 3px;
    }
  }
`;
export const Inner = styled(ToastContainer) `
  min-width: 400px;
  max-width: 400px;
`;
