import React from "react"; import { toast, ToastOptions, TypeOptions, ToastType } from "react-toastify"; import "react-toastify/dist/ReactToastify.css"; import styled from "styled-components"; import { theme } from "constants/DefaultTheme"; import { AlertIcons } from "icons/AlertIcons"; const ToastBody = styled.div<{ type: TypeOptions }>` height: 100%; border-left: 4px solid ${({ type }) => theme.alert[type].color}; border-radius: 4px; background-color: white; color: black; display: flex; align-items: center; padding-left: 5px; `; const ToastMessage = styled.span` font-size: ${props => props.theme.fontSizes[3]}px; margin: 0 5px; `; const ToastIcon = { info: AlertIcons.INFO, success: AlertIcons.SUCCESS, error: AlertIcons.ERROR, warning: AlertIcons.WARNING, default: AlertIcons.INFO, }; type Props = ToastOptions & { message: string; closeToast?: () => void }; const ToastComponent = (props: Props) => { const alertType = props.type || ToastType.INFO; const Icon = ToastIcon[alertType]; return ( {props.message} ); }; const Toaster = { show: (config: ToastOptions & { message: string }) => { toast(); }, clear: () => toast.dismiss(), }; export const AppToaster = Toaster;