import React from "react"; import styled from "styled-components"; import tinycolor from "tinycolor2"; import { IButtonProps, Button, Alignment } from "@blueprintjs/core"; import { IconName } from "@blueprintjs/icons"; import { Theme } from "constants/DefaultTheme"; import { ThemeProp } from "components/ads/common"; import _ from "lodash"; import { ButtonStyleTypes, ButtonBoxShadow, ButtonBoxShadowTypes, ButtonBorderRadius, ButtonBorderRadiusTypes, ButtonStyleType, ButtonVariant, ButtonVariantTypes, } from "components/constants"; const getCustomTextColor = ( theme: Theme, backgroundColor?: string, prevButtonStyle?: ButtonStyleType, ) => { if (!backgroundColor) return theme.colors.button[ (prevButtonStyle || ButtonStyleTypes.PRIMARY).toLowerCase() ].solid.textColor; const isDark = tinycolor(backgroundColor).isDark(); if (isDark) { return theme.colors.button.custom.solid.light.textColor; } return theme.colors.button.custom.solid.dark.textColor; }; const getCustomHoverColor = ( theme: Theme, prevButtonStyle?: ButtonStyleType, buttonVariant?: ButtonVariant, backgroundColor?: string, ) => { if (!backgroundColor) { return theme.colors.button[ (prevButtonStyle || ButtonStyleTypes.PRIMARY).toLowerCase() ][(buttonVariant || ButtonVariantTypes.PRIMARY).toLowerCase()].hoverColor; } switch (buttonVariant) { case ButtonVariantTypes.SECONDARY: return backgroundColor ? tinycolor(backgroundColor) .lighten(40) .toString() : theme.colors.button.primary.secondary.hoverColor; case ButtonVariantTypes.TERTIARY: return backgroundColor ? tinycolor(backgroundColor) .lighten(40) .toString() : theme.colors.button.primary.tertiary.hoverColor; default: return backgroundColor ? tinycolor(backgroundColor) .darken(10) .toString() : theme.colors.button.primary.primary.hoverColor; } }; const getCustomBackgroundColor = ( theme: Theme, prevButtonStyle?: ButtonStyleType, buttonVariant?: ButtonVariant, backgroundColor?: string, ) => { return buttonVariant === ButtonVariantTypes.PRIMARY ? backgroundColor ? backgroundColor : theme.colors.button[ (prevButtonStyle || ButtonStyleTypes.PRIMARY).toLowerCase() ].primary.bgColor : "none"; }; const getCustomBorderColor = ( theme: Theme, prevButtonStyle?: ButtonStyleType, buttonVariant?: ButtonVariant, backgroundColor?: string, ) => { return buttonVariant === ButtonVariantTypes.SECONDARY ? backgroundColor ? backgroundColor : theme.colors.button[ (prevButtonStyle || ButtonStyleTypes.PRIMARY).toLowerCase() ].secondary.borderColor : "none"; }; const StyledButton = styled((props) => (