import { default as React, ButtonHTMLAttributes, CSSProperties } from 'react'; /** * Button variant options */ export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive'; /** * Button size options */ export type ButtonSize = 'sm' | 'md' | 'lg'; /** * Button props */ export interface ButtonProps extends Omit, 'style'> { /** Button variant */ variant?: ButtonVariant; /** Button size */ size?: ButtonSize; /** Full width button */ fullWidth?: boolean; /** Loading state */ isLoading?: boolean; /** Left icon */ leftIcon?: React.ReactNode; /** Right icon */ rightIcon?: React.ReactNode; /** Custom styles (merged with base styles) */ style?: CSSProperties; } /** * Button component with forwardRef for ref forwarding */ export declare const Button: React.NamedExoticComponent>; /** * Icon-only button component */ export interface IconButtonProps extends Omit { /** Icon to display */ icon: React.ReactNode; /** Accessible label (required for icon-only buttons) */ 'aria-label': string; } export declare const IconButton: React.NamedExoticComponent>; /** * Button group component for grouping related buttons */ export interface ButtonGroupProps { /** Button group children */ children: React.ReactNode; /** Direction of button group */ direction?: 'horizontal' | 'vertical'; /** Gap between buttons */ gap?: 'sm' | 'md' | 'lg'; /** Additional class name */ className?: string; /** Custom styles */ style?: CSSProperties; } export declare const ButtonGroup: React.MemoExoticComponent<({ children, direction, gap, className, style, }: ButtonGroupProps) => React.ReactElement>;