2021-04-26 07:22:30 -07:00
|
|
|
import { FunctionComponent } from 'react'
|
2021-04-29 06:51:16 -07:00
|
|
|
import styled from '@emotion/styled'
|
|
|
|
import tw from 'twin.macro'
|
|
|
|
|
|
|
|
type StyledButtonProps = {
|
|
|
|
secondary: boolean
|
|
|
|
}
|
|
|
|
|
|
|
|
const StyledButton = styled.button<StyledButtonProps>`
|
|
|
|
:before {
|
|
|
|
${tw`absolute left-0 top-0 opacity-0 h-full w-full block bg-gradient-to-tl from-secondary-1-light via-secondary-1-dark to-secondary-2-light transition-opacity duration-500`}
|
|
|
|
border-radius: inherit;
|
|
|
|
content: '';
|
|
|
|
z-index: -10;
|
|
|
|
}
|
|
|
|
|
|
|
|
:hover {
|
|
|
|
:before {
|
|
|
|
${tw`opacity-100`};
|
|
|
|
${({ disabled, secondary }) => (disabled || secondary) && tw`hidden`}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
:focus {
|
|
|
|
${tw`ring-4 ring-secondary-2-light ring-opacity-40`}
|
|
|
|
${({ secondary }) => secondary && tw`ring-0`}
|
|
|
|
}
|
|
|
|
|
|
|
|
:active {
|
|
|
|
:before {
|
|
|
|
${tw`ring-4 ring-secondary-2-light ring-opacity-40`}
|
|
|
|
}
|
|
|
|
}
|
2021-04-29 18:40:11 -07:00
|
|
|
|
|
|
|
${({ secondary }) => secondary && tw`bg-none`}
|
2021-04-29 06:51:16 -07:00
|
|
|
`
|
2021-04-26 07:22:30 -07:00
|
|
|
|
|
|
|
interface ButtonProps {
|
|
|
|
onClick?: (x?) => void
|
|
|
|
disabled?: boolean
|
|
|
|
className?: string
|
2021-04-27 06:47:52 -07:00
|
|
|
secondary?: boolean
|
2021-04-26 07:22:30 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
const Button: FunctionComponent<ButtonProps> = ({
|
|
|
|
children,
|
|
|
|
onClick,
|
|
|
|
disabled = false,
|
|
|
|
className,
|
2021-04-27 06:47:52 -07:00
|
|
|
secondary = false,
|
2021-04-26 07:22:30 -07:00
|
|
|
...props
|
|
|
|
}) => {
|
|
|
|
return (
|
2021-04-29 06:51:16 -07:00
|
|
|
<StyledButton
|
2021-04-26 07:22:30 -07:00
|
|
|
onClick={onClick}
|
|
|
|
disabled={disabled}
|
2021-07-06 15:35:53 -07:00
|
|
|
className={`${className} bg-gradient-to-br from-secondary-1-light via-secondary-1-dark to-secondary-2-light relative z-10 default-transition px-6 py-2 rounded-lg text-fgd-1 hover:bg-bkg-3 focus:outline-none disabled:cursor-not-allowed disabled:opacity-60`}
|
2021-04-29 06:51:16 -07:00
|
|
|
secondary={secondary}
|
2021-04-26 07:22:30 -07:00
|
|
|
{...props}
|
|
|
|
>
|
|
|
|
{children}
|
2021-04-29 06:51:16 -07:00
|
|
|
</StyledButton>
|
2021-04-26 07:22:30 -07:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default Button
|