// @flow
import type { SpaceProps } from '../../../mixins/spacing';
import type { StackeeProps } from '../../../mixins/stackee';
import type { ContainerProps } from '../../../mixins/container';
import type { TestingProps } from '../../../mixins/testing';
import type { StylableProps } from '../../../mixins/themes';
import type { AriaProps } from '../../../mixins/aria';

export type ButtonProps = {|
  ...SpaceProps,
  ...StackeeProps,
  ...ContainerProps,
  ...TestingProps,
  ...StylableProps,
  ...AriaProps,
  'aria-describedby'?: string,
  disabled?: boolean,
  size?: 'sm' | 'md',
  type?: 'submit' | 'button',
  onBlur?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onClick?: (event: SyntheticEvent<HTMLButtonElement>) => void,
  onFocus?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onMouseEnter?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onMouseLeave?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  href?: string,
  target?: string,
  isLoading?: boolean,
|};
