/** * TyCheckbox Web Component * PORTED FROM: clj/ty/components/input.cljs (checkbox type) * * Standalone checkbox component with: * - Label, error messages, semantic styling * - Boolean checked state * - Form value customization * - Keyboard accessibility (Space/Enter) * - Size variants (xs, sm, md, lg, xl) * - Semantic flavors (primary, secondary, success, danger, warning, neutral) */ import type { Flavor, Size } from "../types/common.js"; import { TyComponent } from "../base/ty-component.js"; import type { PropertyChange } from "../utils/property-manager.js"; /** * Component internal state (for typing TyComponent) */ interface CheckboxState { checked: boolean; listenersSetup: boolean; } /** * TyCheckbox Element Interface */ export interface TyCheckboxElement extends HTMLElement { checked: boolean; value: string; name: string; disabled: boolean; required: boolean; error: string; size: Size; flavor: Flavor; form: HTMLFormElement | null; } /** * Ty Checkbox Component * * @example * ```html * * Subscribe to newsletter * * * * Accept terms * * * * * Agree to terms * * * * Small * Large * * * Primary * Success * * * * * Premium feature * * ``` */ export declare class TyCheckbox extends TyComponent implements TyCheckboxElement { static formAssociated: boolean; protected static properties: { checked: { type: "boolean"; visual: boolean; formValue: boolean; emitChange: boolean; default: boolean; }; value: { type: "string"; default: string; }; name: { type: "string"; default: string; }; disabled: { type: "boolean"; visual: boolean; default: boolean; }; required: { type: "boolean"; visual: boolean; default: boolean; }; error: { type: "string"; visual: boolean; default: string; }; size: { type: "string"; visual: boolean; default: string; validate: (v: any) => boolean; coerce: (v: any) => any; }; flavor: { type: "string"; visual: boolean; default: string; validate: (v: any) => boolean; coerce: (v: any) => any; }; }; private _listenersSetup; private _clickHandler; private _keydownHandler; private _focusHandler; private _blurHandler; constructor(); /** * Called when component connects to DOM * TyComponent already handled pre-connection property capture */ protected onConnect(): void; /** * Called when component disconnects from DOM */ protected onDisconnect(): void; /** * Handle property changes - called BEFORE render */ protected onPropertiesChanged(_changes: PropertyChange[]): void; /** * Override form value to return value when checked, null when unchecked */ protected getFormValue(): FormDataEntryValue | null; /** * Build CSS class list for checkbox container */ private buildClassList; /** * Handle checkbox click event - standards compliant approach */ private handleCheckboxClick; /** * Handle checkbox keyboard events - space/enter to toggle */ private handleCheckboxKeydown; /** * Remove event listeners for cleanup */ private removeEventListeners; /** * Setup event listeners for checkbox functionality * IMPORTANT: Only called ONCE, not on every render */ private setupEventListeners; /** * Render the checkbox component */ protected render(): void; get checked(): boolean; set checked(value: boolean); get value(): string; set value(val: string); get name(): string; set name(val: string); get disabled(): boolean; set disabled(value: boolean); get required(): boolean; set required(value: boolean); get error(): string; set error(val: string); get size(): Size; set size(value: Size); get flavor(): Flavor; set flavor(value: Flavor); get form(): HTMLFormElement | null; } export {}; //# sourceMappingURL=checkbox.d.ts.map