import type { CSSProperties, VNodeChild } from "vue"; import type { XyControlStatus, XyOptionValue, XySemanticClassNames, XySemanticStyles, XySize } from "../core"; export type XyCheckboxSemanticDom = "icon" | "label" | "root"; export interface XyCheckboxProps { ariaLabel?: string; autofocus?: boolean; classNames?: XyCheckboxClassNames; defaultChecked?: boolean; disabled?: boolean; falseValue?: XyOptionValue; id?: string; indeterminate?: boolean; modelValue?: XyOptionValue; name?: string; readonly?: boolean; required?: boolean; size?: XySize; status?: XyControlStatus; styles?: XyCheckboxStyles; tabindex?: number; trueValue?: XyOptionValue; value?: XyOptionValue; } export type XyCheckboxClassNames = XySemanticClassNames; export type XyCheckboxStyles = XySemanticStyles; export interface XyCheckboxOption { className?: string; disabled?: boolean; label: string; style?: CSSProperties; title?: string; value: XyOptionValue; } export type XyCheckboxOptionInput = XyCheckboxOption | XyOptionValue; export interface XyCheckboxGroupProps { ariaLabel?: string; defaultValue?: XyOptionValue[]; direction?: "horizontal" | "vertical"; disabled?: boolean; modelValue?: XyOptionValue[]; name?: string; options?: XyCheckboxOptionInput[]; readonly?: boolean; size?: XySize; status?: XyControlStatus; } export interface XyCheckboxGroupSlots { default?: () => VNodeChild; option?: (props: { checked: boolean; option: XyCheckboxOption; }) => VNodeChild; }