UNPKG

cra-template-pdr

Version:
131 lines (111 loc) 2.6 kB
import styled from "styled-components"; interface ButtonStyledProps { size?: 'sm' | 'md' | 'lg' color?: 'default' | 'primary' | 'secondary' | 'danger' variant?: 'outline' | 'text' fontSize?: string disableShadow?: boolean } interface sizeButtonProps { sm: string md: string lg: string } const iconSize: sizeButtonProps = { sm: "14px", md: "18px", lg: "20px" } const sizeButton: sizeButtonProps = { sm: "6px 12px", md: "8px 16px", lg: "11px 22px" } interface colorButtonProps { default: string primary: string secondary: string danger: string } const colorButton: colorButtonProps = { default: ` background-color: #E0E0E0; color: #3F3F3F; &:hover, &:focus { background: #AEAEAE; } `, primary: ` background-color: #2962FF; color: #FFFFFF; &:hover, &:focus { background: #0039CB; } `, secondary: ` background-color: #455A64; color: #FFFFFF; &:hover, &:focus { background: #1C313A; } `, danger: ` background-color: #D32F2F; color: #FFFFFF; &:hover, &:focus { background: #9A0007; } ` } interface variantButtonProps { outline: string text: string } const variantButton:variantButtonProps ={ outline: ` border: 1px solid #3D5AFE; color: #3D5AFE; background-color: transparent; &:hover, &:focus { background: rgba(41, 98, 255, 0.1); }`, text: ` background-color: transparent; color: #3D5AFE; &:hover, &:focus { background: rgba(41, 98, 255, 0.1); } ` } export const ButtonStyled = styled.button<ButtonStyledProps>` display: flex; align-items: center; gap: 10px; font-size: ${({fontSize}) => fontSize || "1.4rem"}; line-height: 2rem; color: #3F3F3F; font-weight: 500; border-radius: 6px; box-shadow: 0px 2px 3px rgba(51, 51, 51, 0.2); cursor: pointer; padding: ${({size}) => size ? sizeButton[size] : sizeButton['md'] }; ${({color}) => color ? colorButton[color] : colorButton['default']} ${({variant}) => variant && variantButton[variant]} ${({disableShadow}) => disableShadow && ` box-shadow: unset; `} &:disabled { background: #E0E0E0; color: #9E9E9E; box-shadow: unset; border: none; cursor: not-allowed; ${({variant}) => variant === 'text' && ` background-color: transparent; `} } svg { width: ${({size}) => size ? iconSize[size] : iconSize['md'] }; height: ${({size}) => size ? iconSize[size] : iconSize['md'] }; } `