import React, { type ReactNode, type MouseEvent } from "react"; import { type IconProp } from "src/shared/renderIcon"; export declare const BUTTON_VARIANTS: readonly ["default", "secondary", "destructive", "destructive-soft", "outline", "ghost", "link"]; export declare const BUTTON_SIZES: readonly ["default", "xs", "sm", "lg", "icon", "icon-xs", "icon-sm", "icon-lg"]; export type ButtonVariant = (typeof BUTTON_VARIANTS)[number]; export type ButtonSize = (typeof BUTTON_SIZES)[number]; type IconPosition = "left" | "right"; type ButtonType = "button" | "reset" | "submit"; interface ButtonTooltipProps { content?: ReactNode; position?: string; disabled?: boolean; } export interface ButtonProps extends Omit, "type" | "disabled" | "className" | "children" | "onClick"> { /** Visual variant of the button. */ variant?: ButtonVariant; /** Size of the button. */ size?: ButtonSize; /** Text label rendered inside the button. */ label?: string; /** Icon component, element, or class-name string. */ icon?: IconProp; /** Placement of the icon relative to the label. */ iconPosition?: IconPosition; /** Show a loading spinner and prevent clicks. */ loading?: boolean; /** Disable the button. */ disabled?: boolean; /** Click handler. */ onClick?: (e: MouseEvent) => void; /** Internal route (react-router `Link`). */ to?: string; /** External URL (renders an anchor tag). */ href?: string; /** HTML button type attribute. */ type?: ButtonType; /** Stretch the button to fill its container. */ fullWidth?: boolean; /** Additional CSS class names. */ className?: string; /** Props forwarded to a wrapping Tooltip. */ tooltipProps?: ButtonTooltipProps | null; /** Render as a custom element (polymorphic). */ asChild?: boolean; /** * Content rendered after the label and any right-side icon (e.g., a trailing * chevron, badge, or shortcut indicator). Auto-wrapped with * `data-icon="inline-end"` so the button's compact end-padding kicks in. */ trailing?: ReactNode; /** Children rendered inside the button (fallback for `label`). */ children?: ReactNode; } declare const Button: React.ForwardRefExoticComponent>; export { Button };