import * as React from "react"; import { IconShapes } from "../../icon/components/Icon"; import { LinkProps } from "../../link/types"; export declare enum ButtonAppearances { Primary = "primary", Secondary = "secondary", Standard = "standard", Danger = "danger", Success = "success", Warning = "warning", Outline = "outline" } export interface ButtonProps extends LinkProps { /** * If the button triggers new content to appear (e.g.: modals and dropdowns) */ ariaHaspopup?: boolean; /** * Should be used if the button does not contain text children. For example: a button that is just an icon */ ariaLabel?: string; children?: React.ReactNode | string; /** * Allows custom styling */ className?: string; /** * Whether or not the button is enabled */ disabled?: boolean; /** * The icon that appears before the button text */ iconStart?: IconShapes | React.ReactElement; /** * The icon that appears after the button text */ iconEnd?: IconShapes | React.ReactElement; /** * Whether the action the button was meant to do has completed */ isProcessing?: boolean; /** * If the button should fill the width of it's container */ isFullWidth?: boolean; /** * If the button is on a dark background */ isInverse?: boolean; /** * The function that is called when the button loses focus */ onBlur?: (e?: React.SyntheticEvent) => void; /** * The function that is called when the button gets focus */ onFocus?: (e?: React.SyntheticEvent) => void; /** * The function that is called when the button is "clicked" via cursor, touch, or keyboard */ onClick?: (e?: React.SyntheticEvent) => void; /** * The type of button matching the HTML "type" attribute on the