import type { ButtonHTMLAttributes, FC, ReactNode } from "react";
import type { AvailableSizes } from "../../shared/types";
export type ButtonVariant = "primary" | "secondary" | "tertiary";
export type ButtonSize = AvailableSizes;
export type ButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "prefix"> & {
    /** Button content rendered between optional prefix and suffix elements. */
    children: ReactNode;
    /** Visual treatment used for the button. */
    variant?: ButtonVariant;
    /** Size preset controlling padding and typography. */
    size?: ButtonSize;
    /** Whether the button should show its loading state. */
    isLoading?: boolean;
    /** Optional content rendered before the button label. */
    prefix?: JSX.Element | FC | ReactNode;
    /** Optional content rendered after the button label. */
    suffix?: JSX.Element | FC | ReactNode;
};
