// @flow
import type { TranslatedContent } from '../../../types';
import type { FormInputProps } from '../internals/form-input/form-input.proptypes';
import type { MaskedTextInputOptions } from '../internals/masked-text-input/masked-text-input.proptypes';
import type { MarginOnlySpaceProps } from '../../../mixins/spacing';
import type { StackeeProps } from '../../../mixins/stackee';
import type { StylableProps } from '../../../mixins/themes';
import type { TestingProps } from '../../../mixins/testing';
import type { AriaProps } from '../../../mixins/aria';

type LabelProps = {|
  label: TranslatedContent,
|};

export type TextInputProps<ValueType> = {|
  ...TestingProps,
  ...StylableProps,
  ...LabelProps,
  ...FormInputProps<ValueType>,
  ...MarginOnlySpaceProps,
  ...StackeeProps,
  ...TestingProps,
  ...AriaProps,
  iconType?: 'lock' | 'error' | 'checkmark',
  disabled?: boolean,
  hideLabel?: boolean,
  large?: boolean,
  mask?: boolean,
  maskOptions?: MaskedTextInputOptions,
  name?: string,
  floatLabel?: boolean,
  autocomplete?: string,
|};
