/**
* TyButton Web Component
*
* Three appearance variants × six flavors × three tones (+/base/-).
* appearance="solid" saturated brand fill (default)
* appearance="outlined" transparent bg, text === border
* appearance="ghost" text only, hover bg
*
* Append `+` or `-` to a flavor for stronger/softer tone (e.g. "primary+").
*/
import type { Flavor, Size, TyButtonElement } from "../types/common.js";
import { TyComponent } from "../base/ty-component.js";
import type { PropertyChange } from "../utils/property-manager.js";
type Appearance = "solid" | "outlined" | "ghost";
interface ButtonState {
flavor: Flavor;
size: Size;
appearance: Appearance;
disabled: boolean;
loading: boolean;
type: "button" | "submit" | "reset";
pill: boolean;
action: boolean;
wide: boolean;
name: string;
value: string;
}
/**
* Ty Button Component
*
* @example
* ```html
* Default solid
* Outlined
* Ghost stronger
* ```
*/
export declare class TyButton extends TyComponent implements TyButtonElement {
static formAssociated: boolean;
protected static properties: {
flavor: {
type: "string";
visual: boolean;
default: string;
};
size: {
type: "string";
visual: boolean;
default: string;
validate: (v: any) => boolean;
coerce: (v: any) => any;
};
appearance: {
type: "string";
visual: boolean;
default: string;
validate: (v: any) => boolean;
coerce: (v: any) => any;
};
disabled: {
type: "boolean";
visual: boolean;
default: boolean;
};
loading: {
type: "boolean";
visual: boolean;
default: boolean;
};
type: {
type: "string";
visual: boolean;
default: string;
};
pill: {
type: "boolean";
visual: boolean;
default: boolean;
};
action: {
type: "boolean";
visual: boolean;
default: boolean;
};
wide: {
type: "boolean";
visual: boolean;
default: boolean;
};
name: {
type: "string";
default: string;
};
value: {
type: "string";
default: string;
};
};
private _structureInitialized;
constructor();
protected onConnect(): void;
protected onDisconnect(): void;
protected onPropertiesChanged(_changes: PropertyChange[]): void;
get flavor(): Flavor;
set flavor(value: Flavor);
get size(): Size;
set size(value: Size);
get appearance(): Appearance;
set appearance(value: Appearance);
get disabled(): boolean;
set disabled(value: boolean);
get loading(): boolean;
set loading(value: boolean);
get type(): "button" | "submit" | "reset";
set type(value: "button" | "submit" | "reset");
get pill(): boolean;
set pill(value: boolean);
get action(): boolean;
set action(value: boolean);
get wide(): boolean;
set wide(value: boolean);
get name(): string;
set name(value: string);
get value(): string;
set value(value: string);
/** Parse the optional `+`/`-` shade suffix from a flavor string. */
private parseFlavor;
private buildClasses;
private handleFormAction;
private initializeButtonStructure;
private applyLoadingState;
protected render(): void;
}
export {};
//# sourceMappingURL=button.d.ts.map