import * as React from 'react'; import { OmitPolyfill, IconElement, TooltipCommonProps } from '../common'; export type ButtonWithAsProp = ButtonAsButtonProps | ButtonAsAnchorProps | ButtonGenericProps | ButtonAsComponentProps; type ButtonAsButtonProps = React.ButtonHTMLAttributes & T & { /** Renders component as any other component or a given HTML tag. */ as?: 'button'; /** Defines a callback function which is called every time a button is clicked. */ 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<{ /** Accepts any item as a child element. For all common cases pass a standard text string. */ children?: React.ReactNode; /** Specifies a CSS class name to be appended to the component’s root element. */ className?: string; /** Specifies the skin of a button. */ skin?: ButtonSkin; /** Specifies the priority of a button. */ priority?: ButtonPriority; /** * Controls the size of a button. * @default medium */ size?: ButtonSize; /** Sets button width to fill a 100% of a parent container width. */ fullWidth?: boolean; /** Pass an icon or a component to display at the end of a label (e.g., svg, image, etc.) */ suffixIcon?: IconElement; /** Pass an icon or a component to display at the front of a label (e.g., svg, image, etc.) */ prefixIcon?: IconElement; /** Specifies whether user interactions are disabled. */ disabled?: boolean; /** Applies a data-hook HTML attribute that can be used in the tests. */ dataHook?: string; /** Specifies whether component handles text overflow with ellipsis. If enabled, label that exceed available space will be displayed inside of a tooltip when user hover over a button. */ ellipsis?: boolean; /** Specifies whether the full button label is displayed in a tooltip when label overflows available space. * * Behaviour is enabled by default. Set property value to false to show ellipsis without a tooltip. */ showTooltip?: boolean; /** Allows to pass all common tooltip props. Use it to customize a tooltip created from text ellipsis. * @linkTypeTo components-overlays--tooltip */ tooltipProps?: TooltipCommonProps; }>; export default class Button extends React.Component { } export type ButtonSkin = 'standard' | 'inverted' | 'destructive' | 'premium' | 'dark' | 'light' | 'transparent' | 'premium-light' | 'ai'; export type ButtonPriority = 'primary' | 'secondary'; export type ButtonSize = 'tiny' | 'small' | 'medium' | 'large'; export {}; //# sourceMappingURL=Button.types.d.ts.map