import { ButtonType } from '../../../Types/ButtonType'; import { CustomElement } from '../../Abstracts/CustomElement'; import type { IButtonBaseElementProps } from './IButtonBaseElementProps'; declare const ButtonBaseElement_base: import("../../../../Index").ControlBehaviorReturn, import("../../../Behaviors/Disableable").IDisableableProps>, import("../../../Behaviors/Valueable").IValueableProps>, import("../../../Behaviors/Sizeable").ISizeableProps>, import("../../../Behaviors/Appearanceable").IAppearanceableProps>, import("../../../Behaviors/Variantable").IVariantableProps>, import("../../../Behaviors/Rippleable").IRippleableProps>; /** * Button Base Element - The foundational base class for all button-type components. * * @description * ButtonBaseElement provides the core functionality and behavior patterns for all button-like * interactive controls in the Mosaik design system. It combines essential behaviors including * focus management, disabled states, visual variants, sizing, appearance modes, and value tracking. * This abstract class establishes the common API surface for buttons, icon buttons, toggle buttons, * and other clickable controls. It manages the button type attribute (button/submit/reset) which * determines how the button interacts with parent forms. All concrete button implementations * extend this base class to inherit consistent behavioral patterns and styling hooks. * * @remarks * The class applies multiple behavior mixins in a specific composition order: Focusable (innermost) * → Disableable → Valueable → Sizeable → Appearanceable → Variantable (outermost). This layering * ensures proper inheritance of lifecycle hooks and property override patterns. * * @name ButtonBaseElement * @category Abstract Elements * * @fires connected {ConnectedEvent} - Emitted when the element is connected to the DOM * @fires disconnected {DisconnectedEvent} - Emitted when the element is disconnected from the DOM * @fires changed {PropertyChangedEvent} - Emitted when any attribute changes before update * * @example * Extending ButtonBaseElement to create a custom button: * ```typescript * export class IconButtonElement extends ButtonBaseElement { * constructor() { * super(); * } * * protected override render() { * return html``; * } * } * ``` * * @example * Using type property for form integration: * ```typescript * Submit Form * Reset Form * Regular Button * ``` * * @example * Leveraging inherited behaviors: * ```html * * Action * * ``` * * @abstract * @public */ export declare abstract class ButtonBaseElement extends ButtonBaseElement_base implements IButtonBaseElementProps { private _type; /** * @public */ constructor(); /** * Gets or sets the `type` property. * It modifies the classification and default behavior of the `ButtonElement`. * `submit` and `reset` are only necessary when the `ButtonElement` is located in a form and should control this actions. * * @public * @attr type */ get type(): ButtonType; set type(value: ButtonType); /** * @protected * @override */ protected onApplyTemplate(): void; } export {}; //# sourceMappingURL=ButtonBaseElement.d.ts.map