mirror of
https://github.com/ruisaraiva19/favycon.git
synced 2026-09-14 11:06:21 +05:00
* feat(about-us): add about us modal * fix(dark-mode): fix dark mode white flash * improvement(seo): improved seo meta tags * improvement(copy-code): add code copied label * improvement(dark-mode): improve dark mode white flash
40 lines
899 B
TypeScript
40 lines
899 B
TypeScript
import React from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import classNames from 'classnames'
|
|
|
|
import styles from './index.module.scss'
|
|
|
|
type ButtonProps = {
|
|
children: PropTypes.ReactNodeLike
|
|
variant: 'primary' | 'transparent' | 'regularTransparent'
|
|
weight: 'regular' | 'medium' | 'semiBold' | 'bold'
|
|
color: 'black' | 'gray' | 'white' | 'link'
|
|
background: 'bgLink' | 'bgGreen'
|
|
}
|
|
|
|
const Button = ({
|
|
children,
|
|
variant,
|
|
weight,
|
|
color,
|
|
background,
|
|
...props
|
|
}: ButtonProps & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>) => {
|
|
const className = classNames(styles[variant], styles[weight], styles[color], styles[background], props.className)
|
|
|
|
return (
|
|
<button {...props} className={className}>
|
|
{children}
|
|
</button>
|
|
)
|
|
}
|
|
|
|
Button.defaultProps = {
|
|
variant: 'primary',
|
|
weight: 'bold',
|
|
color: 'black',
|
|
background: '',
|
|
}
|
|
|
|
export { Button }
|