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>;