import * as React from 'react'; import { OmitPolyfill, IconElement, TooltipCommonProps } from '../common'; import {PropsWithChildren} from "react"; export type ButtonWithAsProp = | ButtonAsButtonProps | ButtonAsAnchorProps | ButtonGenericProps | ButtonAsComponentProps; type ButtonAsButtonProps = React.ButtonHTMLAttributes & T & { as?: 'button'; onClick?: React.MouseEventHandler; }; type ButtonAsAnchorProps = React.AnchorHTMLAttributes & T & { as: 'a'; onClick?: React.MouseEventHandler; }; type ButtonGenericProps = T & { as: keyof OmitPolyfill; onClick?: React.MouseEventHandler; [additionalProps: string]: any; }; type ButtonAsComponentProps = T & { as: React.ComponentType; onClick?: React.MouseEventHandler; [additionalProps: string]: any; }; export type ButtonProps = ButtonWithAsProp<{ className?: string; skin?: ButtonSkin; priority?: ButtonPriority; size?: ButtonSize; fullWidth?: boolean; suffixIcon?: IconElement; prefixIcon?: IconElement; disabled?: boolean; dataHook?: string; ellipsis?: boolean; showTooltip?: boolean; tooltipProps?: TooltipCommonProps; }>; export default class Button extends React.Component> {} export type ButtonSkin = | 'standard' | 'inverted' | 'destructive' | 'premium' | 'dark' | 'light' | 'transparent' | 'premium-light'; export type ButtonPriority = 'primary' | 'secondary'; export type ButtonSize = 'tiny' | 'small' | 'medium' | 'large';