import type * as React from "react";

/**
 * The Reckon action primitive. Seven variants, ten sizes, optional loading state.
 */
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  /** Visual weight. "default" is the solid neutral button — one per view. */
  variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive" | "destructive-outline";
  /** Height + padding. "icon*" sizes are square. */
  size?: "xs" | "sm" | "default" | "lg" | "xl" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | "icon-xl";
  /** Swaps the label for a centred spinner and blocks interaction. */
  loading?: boolean;
  /** Render as another element (an <a>, a Link) keeping button styling. */
  render?: React.ReactElement;
  children?: React.ReactNode;
}
export declare function Button(props: ButtonProps): React.ReactElement;
