import { AnchorHTMLAttributes, ButtonHTMLAttributes, ReactNode, Ref } from 'react'; import { RippleConfig } from '../hooks/useRipple'; import { Variant as LoadingVariant } from '../Loading/Loading.interface'; import { ComponentColor, IComponentBaseProps, Shape, Size } from '../types'; export declare const BTN = "btn"; export declare const COLOR_MAP: Record; type Variant = "outline" | "link"; export declare const VARIANT_MAP: Record; export declare const SIZE_MAP: Record; export declare const SHAPE_MAP: Record; export declare const BUTTON_MAP: { active: string; disabled: string; noAnimation: string; wide: string; fullWidth: string; responsive: string; soft: string; dash: string; ripple: string; circle: string; square: string; xs: string; sm: string; md: string; lg: string; xl: string; link: string; outline: string; success: string; info: string; warning: string; error: string; primary: string; secondary: string; accent: string; neutral: string; ghost: string; }; interface BaseButtonProps extends IComponentBaseProps { shape?: Shape; size?: Size; variant?: "outline" | "link"; color?: ComponentColor; wide?: boolean; fullWidth?: boolean; responsive?: boolean; noAnimation?: boolean; loading?: boolean; loadingVariant?: LoadingVariant; active?: boolean; disabled?: boolean; startIcon?: ReactNode; endIcon?: ReactNode; soft?: boolean; ripple?: RippleConfig; dash?: boolean; } interface ButtonAsButton extends BaseButtonProps, Omit, "color"> { ref?: Ref; href?: never; } interface ButtonAsAnchor extends BaseButtonProps, Omit, "color"> { ref?: Ref; href: string; } export type ButtonProps = ButtonAsButton | ButtonAsAnchor; export {};