import { ButtonAppearance, Size, DataTrackingId, LayoutUtilProps } from '../../types'; import { ComponentPropsWithoutRef } from 'react'; import { IconProps } from '../Icon'; import { AiIconName } from './internal'; export type { AiIconName }; /** * Props for the Button component * @extends Omit, "children"> * @extends LayoutUtilProps * @extends DataTrackingId */ export type ButtonProps = Omit, "children"> & LayoutUtilProps & DataTrackingId & { /** * When `true` or an icon name, shows an AI indicator. With button text, any leading * `icon` (plain Svg or `icon.before`) is not shown—the AI icon is used instead. * On an icon-only button, `icon` is not shown—the AI icon is used instead. * Icon-only usage must include an accessible name (for example `aria-label`). * In development, a console warning is logged when `icon` is overridden. */ aiMark?: boolean | AiIconName; /** * The visual variant of the button. * @default secondary */ appearance?: ButtonAppearance; /** * The size of the button. * @default medium */ size?: Extract; /** * The loading state of the button. * If true, it will show infinite state of the loading. * @default false */ loading?: boolean; } & ({ children?: ComponentPropsWithoutRef<"button">["children"]; /** * The icons of the button. */ icon?: IconProps["svg"] | { after: IconProps["svg"]; } | { before: IconProps["svg"]; }; } | { children?: never; /** * The icon of the icon only button. */ icon?: IconProps["svg"]; }); /** * Button component for triggering actions and user interactions. * * Features: * - Multiple visual appearances (primary, secondary, ghost, danger variants) * - Four size options (xsmall, small, medium, large) * - Loading state with spinner animation * - Icon support (before, after, or icon-only) * - Optional AI mark / named AI icons via `aiMark` * - Full accessibility support with ARIA attributes * - Supports layout utilities for positioning and spacing * - Automatic disabled state when loading * - Flexible content with text and/or icons * - Automatic tracking ID generation for analytics * * @example * */ export declare const Button: import('react').ForwardRefExoticComponent>;