import * as React from 'react'; import { IBox, IconName, IconType, Color, IText, IIcon } from "../../core/types"; import { IConnected } from '../Connected/types'; /** * Defines the various types of buttons available. */ export declare type ButtonType = 'default' | 'primary' | 'positive' | 'negative' | 'read-only' | 'disabled' | 'stroke' | 'submit' | 'text' | 'ghost' | 'active'; /** * Props for the Button component. */ export interface IButton extends IBox, IConnected { /** * Button text. Can be a string or ReactNode. */ label?: string | React.ReactNode; /** * Styling option for the button type. */ type?: ButtonType; /** * Adds a tooltip to the button. */ tooltip?: string | React.ReactNode; /** * Icon name or custom React element for the left side of the button. */ icon?: IconName | React.ReactElement; /** * Icon type for the left side of the button. */ iconType?: IconType; /** * Icon color for the left side of the button. */ iconLeftColor?: Color; /** * Icon name or custom React element for the right side of the button. */ iconRight?: IconName | React.ReactElement; /** * Icon color for the right side of the button. */ iconRightColor?: Color; /** * Adds a loading indicator (replaces left icon). */ loading?: boolean; /** * Disables the onClick handler. */ isDisabled?: boolean; /** * Toggles small button size. */ small?: boolean; } /** * Button component with sub-components. */ export interface IButtonComponent extends React.FC { Text: React.FC; Icon: React.FC; } export interface IButtonText extends IText { } export interface IButtonIcon extends IIcon { } export interface IButtonGroup { children: React.ReactNode; }