import { ButtonOwnProps } from '@mui/base'; import { AriaRole, ForwardedRef, MouseEvent, ReactElement, ReactNode } from 'react'; import { IconProps } from '../../../Base/Icon/Icon.types'; interface CommonProps { ariaDescribedBy?: string; ariaExpanded?: boolean; ariaHaspopup?: boolean; ariaLabel?: string; ariaLabelledBy?: string; className?: string; 'data-testid'?: string; disabled?: boolean; id?: string; ref?: ForwardedRef; role?: AriaRole; selected?: boolean | 'mixed'; type?: React.ButtonHTMLAttributes['type']; } export interface BaseButtonProps extends ButtonOwnProps, CommonProps { ariaSelected?: boolean; onClick: (event: MouseEvent) => void; onMouseDown?: (event: MouseEvent) => void; } export interface LinkProps extends CommonProps { children?: ReactNode; href?: string; onClick?: (event: MouseEvent) => void; rel?: string; target?: string; } export interface ButtonVariationProps { fullWidth?: boolean; leftIcon?: ReactElement; loading?: boolean; rightIcon?: ReactElement; size?: 'tiny' | 'small' | 'medium' | 'large'; target?: string; text?: string; } export type ButtonProps = BaseButtonProps | LinkProps; export {};