import { VariantProps } from 'class-variance-authority';
import * as React from "react";
/**
* Button variant styles using class-variance-authority.
* Supports 6 visual variants and 4 size options.
*/
declare const buttonVariants: (props?: ({
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "success" | null | undefined;
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
/**
* Props for the ZeroShot Button component.
*
* @example Compositional API (for humans):
* ```tsx
*
* ```
*
* @example Config API (AI-optimized):
* ```tsx
* } />
* ```
*/
export interface ButtonProps extends React.ButtonHTMLAttributes, VariantProps {
/**
* When true, delegates rendering to the child element via Radix Slot.
* Useful for rendering Buttons as links: ``
* @default false
*/
asChild?: boolean;
/**
* Config API: Text label for the button. When provided, renders as children.
* If `children` is also provided, `children` takes precedence.
* @example
*/
label?: string;
/**
* Shows a loading spinner and disables the button.
* The button text remains visible but dimmed.
* @default false
* @example
*/
loading?: boolean;
/**
* Optional custom loading indicator rendered before content when `loading` is true.
* @example } />
*/
loadingIndicator?: React.ReactNode;
/**
* Icon element to render alongside the label.
* Position controlled by `iconPosition`.
* @example } label="Add Item" />
*/
icon?: React.ReactNode;
/**
* Position of the icon relative to the label.
* @default "start"
*/
iconPosition?: "start" | "end";
}
declare const Button: React.MemoExoticComponent>>;
export { Button, buttonVariants };
//# sourceMappingURL=button.d.ts.map