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