import { RadiantElement } from '@ecopages/radiant';
import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter';
export type RuiCheckboxProps = {
/** Whether the checkbox is checked. Default: `false`. */
checked?: boolean;
/**
* Partially checked (mixed) state for group controllers.
* When `true`, the native input's `indeterminate` IDL is set and
* `aria-checked="mixed"` is exposed. Default: `false`.
*/
indeterminate?: boolean;
/** Disable the checkbox. Default: `false`. */
disabled?: boolean;
/** Value submitted with forms when checked. */
value?: string;
/** Associates the control with a form field name. */
name?: string;
};
export type RuiCheckboxChangeDetail = {
checked: boolean;
indeterminate: boolean;
};
/**
* Default submitted value for a checkbox.
*
* @remarks Must match the host `@prop` default: the SSR view seeds the inner
* `` with it so form submission works before hydration.
*/
export declare const CHECKBOX_DEFAULT_VALUE = "on";
/**
* `` — a dual-state or tri-state checkbox.
*
* Implements the WAI-ARIA APG Checkbox pattern on a native
* ``. Checked state uses the HTML `checked` attribute;
* the mixed state uses the `indeterminate` IDL property with `aria-checked="mixed"`.
*
* @see https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/
*
* Keyboard interaction (native to the checkbox):
* - `Space`: toggle checked state
*
* @element rui-checkbox
* @fires rui-change - Emitted after the checked/indeterminate state changes.
* @cssclass rui-checkbox - Label row: box + visible label.
* @cssclass rui-checkbox__input - Native input (visually hidden, receives focus).
* @cssclass rui-checkbox__control - Visible box with check / indeterminate glyph.
* @cssclass rui-checkbox__label - Light-DOM label text.
*/
export declare class RuiCheckbox extends RadiantElement {
checked: boolean;
indeterminate: boolean;
disabled: boolean;
value: string;
name: string;
inputTarget: HTMLInputElement;
changeEvent: EventEmitter;
protected onConnected(): void;
syncInputState(): void;
onInputChange(event: Event): void;
}