import * as React$1 from 'react';
import { ComponentType, SVGProps } from 'react';

/** Available visual style variants for the Button component. */
declare const BUTTON_VARIANT: {
    readonly SOLID: "solid";
    readonly OUTLINE: "outline";
    readonly GHOST: "ghost";
};
/** Available size presets for the Button component. */
declare const BUTTON_SIZE: {
    readonly XS: "xs";
    readonly S: "s";
    readonly M: "m";
};
/** Available semantic intents for the Button component. */
declare const BUTTON_INTENT: {
    readonly PRIMARY: "primary";
    readonly ERROR: "error";
};
/** Available icon positions relative to the label text. */
declare const ICON_POSITION: {
    readonly LEADING: "leading";
    readonly TRAILING: "trailing";
};

/** Visual style of the button. */
type ButtonVariant = (typeof BUTTON_VARIANT)[keyof typeof BUTTON_VARIANT];
/** Size preset for the button. */
type ButtonSize = (typeof BUTTON_SIZE)[keyof typeof BUTTON_SIZE];
/** Semantic intent controlling the button's color scheme. */
type ButtonIntent = (typeof BUTTON_INTENT)[keyof typeof BUTTON_INTENT];
/** Position of the optional icon relative to the label text. */
type IconPosition = (typeof ICON_POSITION)[keyof typeof ICON_POSITION];
/** Props for the Button component. */
interface ButtonProps {
    /** The text label displayed inside the button. */
    children: React.ReactNode;
    /** Visual style variant. @default "solid" */
    variant?: ButtonVariant;
    /** Semantic intent controlling the color scheme. @default "primary" */
    intent?: ButtonIntent;
    /** Size preset controlling padding, border radius, and icon gap. @default "m" */
    size?: ButtonSize;
    /** Optional icon component (Tabler icon or any SVG component). Rendered at 16px. */
    icon?: ComponentType<SVGProps<SVGSVGElement>>;
    /** Position of the icon relative to the label. @default "leading" */
    iconPosition?: IconPosition;
    /** Whether the button is disabled. @default false */
    disabled?: boolean;
    /** Click handler. */
    onClick?: React.MouseEventHandler<HTMLButtonElement>;
    /** Additional CSS class names. */
    className?: string;
    /** Accessible label override (uses children text by default). */
    "aria-label"?: string;
}

/** A versatile button component with multiple variants and sizes. */
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;

export { BUTTON_INTENT, BUTTON_SIZE, BUTTON_VARIANT, Button, type ButtonIntent, type ButtonProps, type ButtonSize, type ButtonVariant, ICON_POSITION, type IconPosition };
