import { Button as ButtonPrimitive } from '@base-ui/react/button';
import { VariantProps } from 'class-variance-authority';
declare const buttonVariants: (props?: ({
    variant?: "link" | "default" | "outline" | "secondary" | "ghost" | "destructive" | "success" | "warning" | "info" | null | undefined;
    size?: "default" | "icon" | "sm" | "lg" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
/**
 * Props for the Button component.
 * Combines Base UI Button props with variant styling options.
 */
type ButtonProps = ButtonPrimitive.Props & VariantProps<typeof buttonVariants>;
/**
 * Versatile button component with multiple visual variants and sizes.
 *
 * Supports icon placement via `data-icon="inline-start"` or `data-icon="inline-end"` attributes
 * on child elements. Use the `render` prop to compose with other components or change the
 * underlying element while maintaining button semantics.
 *
 * @example
 * ```tsx
 * // Basic button
 * <Button variant="default">Click me</Button>
 *
 * // With icon
 * <Button>
 *   <PlusIcon data-icon="inline-start" />
 *   Create
 * </Button>
 *
 * // Icon only
 * <Button size="icon" aria-label="Settings">
 *   <SettingsIcon />
 * </Button>
 *
 * // Custom element
 * <Button render={<a href="/login" />}>Sign in</Button>
 * ```
 */
declare function Button({ className, variant, size, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
export { Button, buttonVariants, type ButtonProps };
//# sourceMappingURL=button.d.ts.map