import React from 'react'; import { DefaultProps, FlowindColor, FlowindSize, Selectors, StatusType } from '../../styles'; import { LoaderProps } from '../loader'; import { ButtonGroup } from './button-group/button-group'; import useStyles, { ButtonStylesParams } from './button.styles'; export type ButtonStylesNames = Selectors; export interface ButtonProps extends DefaultProps { /** Predefined button size */ size?: FlowindSize; type?: StatusType; /** Button type attribute */ htmlType?: 'submit' | 'button' | 'reset'; /** Button color from theme */ color?: FlowindColor; /** Content displayed on the left side of the button label */ leftIcon?: React.ReactNode; /** Adds icon after button label */ rightIcon?: React.ReactNode; /** Sets button width to 100% of parent element */ fullWidth?: boolean; /** Key of theme.radius or any valid CSS value to set border-radius, theme.defaultRadius by default */ radius?: FlowindSize; /** Controls button appearance */ variant?: 'filled' | 'outline' | 'light' | 'default' | 'subtle' | 'fancy'; /** Reduces vertical and horizontal spacing */ compact?: boolean; /** Indicate loading state */ loading?: boolean; /** Props spread to Loader component */ loaderProps?: LoaderProps; /** Loader position relative to button label */ loaderPosition?: 'left' | 'right' | 'center'; /** Button label */ children?: React.ReactNode; /** Disabled state */ disabled?: boolean; /** The native button click event handler. */ onClick?: (event: React.MouseEvent) => void; } export declare const _Button: any; export declare const Button: ((props: import("../../utils/create-polymorphic-component").PolymorphicComponentProps) => React.ReactElement>) & Omit, "component" | keyof ButtonProps> & { ref?: any; }) | (ButtonProps & { component?: React.ElementType; })>, never> & { Group: typeof ButtonGroup; };