import styled from "styled-components";
import { hexToRgb } from "utils/AppsmithUtils";

export default styled.span<{
  animate?: boolean;
  width?: number;
  height?: number;
  color?: string;
}>`
  &&& {
    display: block;
    width: ${props => props.width || 8}px;
    height: ${props => props.height || 8}px;
    border-radius: 50%;
    background: ${props => props.color || props.theme.colors.notification};
    cursor: pointer;
    box-shadow: 0 0 0
      rgba(
        ${props => {
          const rgb = hexToRgb(props.color || props.theme.colors.notification);
          return `${rgb.r}, ${rgb.g}, ${rgb.b}`;
        }},
        0.4
      );
    animation: ${props => (!!props.animate ? "pulse 2s infinite" : "")};

    &:hover {
      animation: none;
    }

    @keyframes pulse {
      0% {
        box-shadow: 0 0 0 0
          rgba(
            ${props => {
              const rgb = hexToRgb(
                props.color || props.theme.colors.notification,
              );
              return `${rgb.r}, ${rgb.g}, ${rgb.b}`;
            }},
            0.4
          );
      }
      70% {
        box-shadow: 0 0 0 15px
          rgba(
            ${props => {
              const rgb = hexToRgb(
                props.color || props.theme.colors.notification,
              );
              return `${rgb.r}, ${rgb.g}, ${rgb.b}`;
            }},
            0
          );
      }
      100% {
        box-shadow: 0 0 0 0
          rgba(
            ${props => {
              const rgb = hexToRgb(
                props.color || props.theme.colors.notification,
              );
              return `${rgb.r}, ${rgb.g}, ${rgb.b}`;
            }},
            0
          );
      }
    }
  }
`;
