import { type VariantProps } from 'class-variance-authority'; import * as React from 'react'; declare const buttonVariants: (props?: ({ appearance?: "ai" | "ghost" | "gradient" | "link" | "outline" | "soft" | "solid" | null | undefined; variant?: "destructive" | "info" | "primary" | "secondary" | "success" | "warning" | null | undefined; size?: "2xl" | "default" | "icon" | "icon-2xl" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "md" | "sm" | "xl" | "xs" | null | undefined; shape?: "round" | "rounded" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; type DotColor = 'success' | 'error' | 'warning' | 'brand' | 'gray'; type ButtonAppearance = 'solid' | 'gradient' | 'soft' | 'outline' | 'ghost' | 'link' | 'ai'; type ButtonVariant = 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'destructive'; type ButtonShape = 'rounded' | 'round'; /** * Render prop type for polymorphic rendering. * Accepts either a React element or a function that receives props and returns an element. * @template Props The props to be passed to the rendered element */ type RenderProp = React.ReactElement | ((props: Props) => React.ReactElement); export interface ButtonProps extends React.ComponentProps<'button'>, Pick, 'size'> { /** Visual appearance - how the button renders */ appearance?: ButtonAppearance; /** Semantic variant - what the button means */ variant?: ButtonVariant; /** Shape of the button corners */ shape?: ButtonShape; /** Shows a loading spinner and disables the button */ loading?: boolean; /** Set to false when render targets a non-button element. */ nativeButton?: boolean; /** Icon displayed at the start (inline-start) of the button text - respects RTL */ startIcon?: React.ReactNode; /** Icon displayed at the end (inline-end) of the button text - respects RTL */ endIcon?: React.ReactNode; /** Shows a colored dot indicator before the button text */ dotIndicator?: boolean; /** Color of the dot indicator */ dotColor?: DotColor; /** Badge content displayed after the button label. Text badges are styled from the button appearance and variant. */ badge?: React.ReactNode; /** For icon-only buttons - renders just the icon without text wrapper */ iconOnly?: boolean; /** Enables animated gradient border (only for appearance="ai"). Auto-true when loading. */ animated?: boolean; /** * Render prop for polymorphic rendering. Accepts either a React element or a render function. * Use this to render the button as a different element (e.g., link) while preserving button styles. * Note: When render is provided, loading/startIcon/endIcon/dotIndicator/badge are ignored. */ render?: RenderProp>; } declare const Dot: ({ color, className, }: { color?: DotColor; className?: string; }) => React.JSX.Element; declare const Button: React.ForwardRefExoticComponent & React.RefAttributes>; /** * Clear/Close icon button - a ghost button specifically for close/clear actions * Commonly used in tags, dialogs, and dismissible elements */ export interface ClearButtonProps extends Omit { /** Size of the clear button */ size?: 'icon-xs' | 'icon-sm' | 'icon' | 'icon-lg' | 'icon-xl' | 'icon-2xl'; } declare function ClearButton({ className, size, ...props }: ClearButtonProps): React.JSX.Element; declare namespace ClearButton { var displayName: string; } export type { ButtonAppearance, ButtonShape, ButtonVariant }; export { Button, buttonVariants, ClearButton, Dot };