import React from 'react' import classNames from 'classnames' import './index.scss' interface Props extends React.DetailedHTMLProps< React.ButtonHTMLAttributes, HTMLButtonElement > { leftAccessoryIcon?: React.ReactNode leftAccessoryClassName?: string rightAccessoryIcon?: React.ReactNode rightAccessoryClassName?: string active?: boolean blended?: boolean contained?: boolean buttonSize?: 'small' | 'medium' | 'large' text?: string } const defaultProps = { active: false, blended: false, contained: false, buttonSize: 'medium' as const, } const Button = React.forwardRef(function button( { leftAccessoryIcon, leftAccessoryClassName, rightAccessoryIcon, rightAccessoryClassName, active, blended, contained, buttonSize, text, ...props }, forwardedRef ) { const classes = classNames(buttonSize, props.className, { Button: true, Active: active, Blended: blended, Contained: contained, }) const leftAccessoryClasses = classNames(leftAccessoryClassName, { Accessory: true, Left: true, }) const rightAccessoryClasses = classNames(rightAccessoryClassName, { Accessory: true, Right: true, }) const hasLeftAccessory = () => { if (leftAccessoryIcon) return {leftAccessoryIcon} } const hasRightAccessory = () => { if (rightAccessoryIcon) return {rightAccessoryIcon} } const hasText = () => { if (text) return {text} } return ( ) }) Button.defaultProps = defaultProps export default Button