import type { ButtonHTMLAttributes, Ref, ReactNode } from "react";
type Variant = "accent" | "neutral" | "ghost" | "danger";
type Size = 24 | 32 | 40 | 48;
export interface IconButtonProps extends ButtonHTMLAttributes {
/** The icon element — an Icon* component. */
children?: ReactNode;
/** Accessible name for the icon-only control. Required: an IconButton has
* no text to name it, so omitting this ships an unnameable button (D60).
* If you also pass `aria-labelledby`, that wins per the accname algorithm. */
"aria-label": string;
/** Visual variant. @default "neutral" */
variant?: Variant;
/** Square size in px (24 | 32 | 40 | 48). @default 32 */
size?: Size;
/** Render as an anchor with this href (D33). disabled → aria-disabled,
* no href attribute, pointer-events: none. */
href?: string;
/** Anchor target; only used with href. */
target?: string;
/** Anchor rel; only used with href. */
rel?: string;
/** Forwarded ref to the underlying element. */
ref?: Ref;
}
/** Square icon-only button; same variant/size/href contract as Button.
* Give it an accessible name (`aria-label`). */
export declare function IconButton({ variant, size, href, target, rel, disabled, className, onClick, ref, ...rest }: IconButtonProps): import("react").JSX.Element;
export {};
//# sourceMappingURL=IconButton.d.ts.map