import { default as React, HTMLProps, MouseEventHandler, ReactNode, ButtonHTMLAttributes } from 'react';
import { KnownIcons } from '../Icon/Icon.component';
/**
* The `Button` component provides an interactive element for user actions, supporting various sizes,
* styles, and states such as disabled or in-progress.
* @see https://cloudoperators.github.io/juno/?path=/docs/components-button--docs
* @see {@link ButtonProps}
*/
export declare const Button: React.ForwardRefExoticComponent & React.RefAttributes>;
export type ButtonVariant = "primary" | "primary-danger" | "default" | "subdued";
type ButtonSize = "small" | "xs" | "default";
export interface ButtonProps extends Omit | HTMLProps, "size"> {
/**
* Child elements or text to be rendered inside the button.
*/
children?: ReactNode;
/**
* Choose a variant for your button style. Defaults to "default" if unspecified.
* @default "default"
*/
variant?: ButtonVariant;
/**
* Chooses the button size. Defaults to "default" if unspecified.
* @default "default"
*/
size?: ButtonSize;
/**
* Indicates if the button is disabled.
*/
disabled?: boolean;
/**
* Optionally specify an href. This renders the Button as an `` element.
*/
href?: string;
/**
* Button label can be passed directly or as children.
*/
label?: string;
/**
* Specify a title for accessibility purposes. Defaults to the label if not specified.
*/
title?: string;
/**
* Pass the name of an icon that the button should display. Can be any icon included with Juno.
*/
icon?: KnownIcons;
/**
* Additional class names for styling.
* @default ""
*/
className?: string;
/**
* Click event handler for the button.
*/
onClick?: MouseEventHandler;
/**
* Button type.
* @default "button"
*/
type?: ButtonHTMLAttributes["type"];
/**
* Indicates whether the button's action is in progress.
* @default false
*/
progress?: boolean;
/**
* Display an alternative label while the button's action is in progress.
*/
progressLabel?: string;
}
export {};
//# sourceMappingURL=Button.component.d.ts.map