import { forwardRef, FunctionComponent, ReactNode, Ref } from 'react' interface AllButtonProps { onClick?: (e?: React.MouseEvent) => void disabled?: boolean className?: string secondary?: boolean children?: ReactNode } interface ButtonProps { size?: 'large' | 'medium' | 'small' type?: 'button' | 'submit' } type ButtonCombinedProps = AllButtonProps & ButtonProps const Button: FunctionComponent = ({ children, onClick, disabled = false, className, secondary, size = 'medium', type = 'button', ...props }) => { return ( ) } interface IconButtonProps { hideBg?: boolean size?: 'small' | 'medium' | 'large' ref?: Ref } type IconButtonCombinedProps = AllButtonProps & IconButtonProps export const IconButton = forwardRef< HTMLButtonElement, IconButtonCombinedProps >((props, ref) => { const { children, onClick, disabled = false, className, hideBg, size } = props return ( ) }) IconButton.displayName = 'IconButton' interface LinkButtonProps { icon?: ReactNode } type LinkButtonCombinedProps = AllButtonProps & LinkButtonProps export const LinkButton: FunctionComponent = ({ children, onClick, disabled = false, className, secondary, ...props }) => { return ( ) } export default Button