/**
* @license
* Copyright 2023 Nuraly, Laabidi Aymen
* SPDX-License-Identifier: MIT
*/
import { LitElement } from 'lit';
import { ButtonType, ButtonSize, ButtonShape, IconPosition, ButtonIcons, ButtonIcon, ButtonIconsConfig } from './button.types.js';
import { ButtonHost } from './interfaces/index.js';
declare const NrButtonElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & (new (...args: any[]) => import("packages/common/src/shared/base-mixin.js").LightDomContent) & typeof LitElement;
/**
* Versatile button component with multiple variants, loading states, and enhanced icon support.
*
* @example
* ```html
*
* Click me
*
*
* Add Item
* Home
*
*
* Navigate
* Enhanced
*
*
* Navigate
*
*
* Processing...
* ```
*
* @fires button-clicked - Button clicked
* @fires link-navigation - Link navigation
*
* @slot default - Button text content
*/
export declare class NrButtonElement extends NrButtonElement_base implements ButtonHost {
static styles: import("lit").CSSResult;
static useShadowDom: boolean;
/** Disables the button */
disabled: boolean;
/** Shows loading spinner */
loading: boolean;
/** Button size (small, medium, large) */
size: ButtonSize | '';
/** Button type (default, primary, secondary, danger, ghost) */
type: ButtonType;
/** Button shape (default, circle, round) */
shape: ButtonShape;
/** Makes button full width */
block: boolean;
/** Applies dashed border */
dashed: boolean;
/** Icon configuration (supports strings or enhanced config objects) */
icon: ButtonIcons;
/** Left icon (alternative to icon array) */
iconLeft?: ButtonIcon;
/** Right icon (alternative to icon array) */
iconRight?: ButtonIcon;
/** Icon configuration object (alternative to icon array) */
icons?: ButtonIconsConfig;
/** Icon position relative to text */
iconPosition: IconPosition;
/** URL for link-type buttons */
href: string;
/** Target attribute for links */
target: string;
/** Enables ripple effect */
ripple: boolean;
/** Custom aria-label */
buttonAriaLabel: string;
/** References to descriptive elements */
ariaDescribedBy: string;
/** HTML button type */
htmlType: string;
requiredComponents: string[];
private rippleController;
private keyboardController;
private linkController;
connectedCallback(): void;
private getCommonAttributes;
private renderIcon;
private handleClick;
private handleKeydown;
/**
* Get the resolved left icon from various sources
*/
private getResolvedLeftIcon;
/**
* Get the resolved right icon from various sources
*/
private getResolvedRightIcon;
render(): import("lit-html").TemplateResult<1>;
}
export {};
//# sourceMappingURL=button.component.d.ts.map