/** * @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