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