import React, { ElementType, AllHTMLAttributes, ReactElement } from 'react'; import classnames from 'classnames'; // @ts-ignore import styles from './Button.less'; interface BaseProps { as?: ElementType; tone?: 'positive'; icon?: ReactElement; 'data-testid'?: string; } interface ButtonProps extends Omit, 'as'>, BaseProps {} interface LinkProps extends Omit, 'as'>, BaseProps {} type Props = ButtonProps | LinkProps; export const Button = ({ as: ButtonComponent = 'button', children, icon, tone, ...props }: Props) => ( {children} {icon ? {icon} : null} );