/// <reference types="react" />

import * as React from 'react';

export interface ImgProps extends React.HTMLAttributes<HTMLElement> {
  prefix?: string;
  className?: string;
  src: string;
  size: 'xs' | 'small' | 'medium' | 'large' | 'xl';
}

export interface TextProps extends React.HTMLAttributes<HTMLElement> {
  prefix?: string;
  className?: string;
  text: string;
  size: 'xxs' | 'xs' | 'small' | 'medium' | 'large' | 'xl' | 'xxl';
  colorSets?: Array<string>;
}

export interface CoverProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title' | 'onMouseEnter' | 'onMouseLeave'> {
  prefix?: string;
  className?: string;
  img: string;
  title: React.ReactNode;
  extra?: React.ReactNode;
  description?: React.ReactNode;
  tag?: string;
  link: string;
  target?: string;
  onMouseEnter?: (e: MouseEvent) => void;
  onMouseLeave?: (e: MouseEvent) => void;
}

export class Img extends React.Component<ImgProps, any> {}
export class Text extends React.Component<TextProps, any> {}

export class Cover extends React.Component<CoverProps, any> {
  static Img: typeof Img;
  static Text: typeof Text;
}
