@vireocodedev/ui · 0.3.2

@vireocodedev/ui/forms

551 public exports generated from the shipped declaration graph.

Showing all 551 exports

export type UseVireoMultiStepFormOptions<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta, TSteps extends readonly VireoMultiStepDescriptor<TFormData, string>[]> = FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta> & {
    steps: TSteps;
    initialStepId?: StepId<TSteps>;
    onStepChange?: (event: VireoMultiStepChangeEvent<StepId<TSteps>>) => void;
};

Renders an opt-in, object-URL-backed preview for a browser image File.

/**
 * Renders an opt-in, object-URL-backed preview for a browser image File.
 */
export declare const VireoFileImagePreview: React.ForwardRefExoticComponent<Omit<VireoFileImagePreviewProps, "ref"> & React.RefAttributes<HTMLDivElement>>;

Valid keys for VireoFileImagePreview utility classes and theme style overrides.

/** Valid keys for VireoFileImagePreview utility classes and theme style overrides. */
export type VireoFileImagePreviewClassKey = keyof VireoFileImagePreviewClasses;

Utility classes available to VireoFileImagePreview.

/** Utility classes available to VireoFileImagePreview. */
export type VireoFileImagePreviewClasses = Record<VireoFileImagePreviewSlotName | "unavailable", string>;

Props VireoFileImagePreview inherits from its default root after excluding component-owned props.

/** Props VireoFileImagePreview inherits from its default root after excluding component-owned props. */
export type VireoFileImagePreviewInheritedProps = Omit<BoxProps<"div">, "children" | "component">;

Props owned by {@link VireoFileImagePreview }.

/** Props owned by {@link VireoFileImagePreview}. */
export type VireoFileImagePreviewOwnProps = VireoFileImagePreviewSlotsAndSlotProps & {
    /** Alternative text for a semantically meaningful preview. @default '' */
    alt?: string;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFileImagePreviewClasses>;
    /** Image file to preview. */
    file: File;
    /** How the image fits inside the preview surface. @default 'contain' */
    objectFit?: VireoFileImagePreviewObjectFit;
    /** Content shown when the selected file cannot be previewed. @default 'Preview unavailable' */
    previewUnavailableText?: React.ReactNode;
};

Props accepted by {@link VireoFileImagePreview }.

/** Props accepted by {@link VireoFileImagePreview}. */
export type VireoFileImagePreviewProps = VireoFileImagePreviewOwnProps & VireoFileImagePreviewInheritedProps;

Replaceable semantic regions exposed by {@link VireoFileImagePreview }.

/** Replaceable semantic regions exposed by {@link VireoFileImagePreview}. */
export type VireoFileImagePreviewSlots = {
    [TSlotName in VireoFileImagePreviewSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFileImagePreview }.

/** Slot props exposed by {@link VireoFileImagePreview}. */
export type VireoFileImagePreviewSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFileImagePreviewSlots, {
    /** @default 'div' */
    root: SlotProps<"div", VireoFileImagePreviewRootSlotPropsOverrides, VireoFileImagePreviewOwnerState>;
    /** @default 'img' */
    image: SlotProps<"img", VireoFileImagePreviewImageSlotPropsOverrides, VireoFileImagePreviewOwnerState>;
    /** @default Typography */
    fallback: SlotProps<typeof Typography, VireoFileImagePreviewFallbackSlotPropsOverrides, VireoFileImagePreviewOwnerState>;
}>;
export type VireoFileListRejection = {
    file: File;
    reason: VireoFileListRejectionReason;
};

Component used to render an optional preview for a browser File.

/** Component used to render an optional preview for a browser File. */
export type VireoFilePreviewRenderer = React.ElementType<VireoFilePreviewRendererProps>;

Props supplied to an opt-in Vireo file preview renderer.

/** Props supplied to an opt-in Vireo file preview renderer. */
export type VireoFilePreviewRendererProps = {
    file: File;
};
export type VireoFileRejection = {
    file: File;
    reason: VireoFileRejectionReason;
};

Keeps form actions in one horizontal row across every containing surface.

/**
 * Keeps form actions in one horizontal row across every containing surface.
 */
export declare const VireoFormActions: React.ForwardRefExoticComponent<Omit<VireoFormActionsProps, "ref"> & React.RefAttributes<HTMLDivElement>>;

Valid keys for VireoFormActions utility classes and theme style overrides.

/** Valid keys for VireoFormActions utility classes and theme style overrides. */
export type VireoFormActionsClassKey = keyof VireoFormActionsClasses;

Utility classes available to VireoFormActions.

/** Utility classes available to VireoFormActions. */
export type VireoFormActionsClasses = Record<VireoFormActionsSlotName, string>;

Props VireoFormActions inherits from its default root after excluding component-owned props.

/** Props VireoFormActions inherits from its default root after excluding component-owned props. */
export type VireoFormActionsInheritedProps = Omit<BoxProps<"div">, "children" | "component">;

Props owned by {@link VireoFormActions }.

/** Props owned by {@link VireoFormActions}. */
export type VireoFormActionsOwnProps = VireoFormActionsSlotsAndSlotProps & {
    children: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormActionsClasses>;
};

Props accepted by {@link VireoFormActions }.

/** Props accepted by {@link VireoFormActions}. */
export type VireoFormActionsProps = VireoFormActionsOwnProps & VireoFormActionsInheritedProps;

Replaceable semantic regions exposed by {@link VireoFormActions }.

/** Replaceable semantic regions exposed by {@link VireoFormActions}. */
export type VireoFormActionsSlots = {
    [TSlotName in VireoFormActionsSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFormActions }.

/** Slot props exposed by {@link VireoFormActions}. */
export type VireoFormActionsSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormActionsSlots, {
    /** @default 'div' */
    root: SlotProps<"div", VireoFormActionsRootSlotPropsOverrides, VireoFormActionsOwnerState>;
    /** @default Box */
    layout: SlotProps<typeof Box, VireoFormActionsLayoutSlotPropsOverrides, VireoFormActionsOwnerState>;
}>;
export type VireoFormApi<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta> = Omit<BaseVireoFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>, "AppField" | "AppForm" | "Field"> & {
    Field: BaseVireoFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>["AppField"];
    Form: React.ForwardRefExoticComponent<VireoFormProps & React.RefAttributes<HTMLFormElement>>;
};

Valid keys for VireoFormAutocompleteField utility classes and theme style overrides.

/** Valid keys for VireoFormAutocompleteField utility classes and theme style overrides. */
export type VireoFormAutocompleteFieldClassKey = keyof VireoFormAutocompleteFieldClasses;

Utility classes available to VireoFormAutocompleteField.

/** Utility classes available to VireoFormAutocompleteField. */
export type VireoFormAutocompleteFieldClasses = Record<VireoFormAutocompleteFieldSlotName | VireoFormAutocompleteFieldStateName, string>;
export type VireoFormAutocompleteFieldOwnProps<TOption, TValue extends VireoFormAutocompleteFieldValue> = VireoFormAutocompleteFieldSlotsAndSlotProps & FilterContract<TOption> & {
    label: React.ReactNode;
    options: readonly TOption[];
    getOptionValue: (option: TOption) => TValue;
    getOptionLabel: (option: TOption) => string;
    getOptionDisabled?: (option: TOption) => boolean;
    renderOption?: (option: TOption, state: VireoFormAutocompleteFieldRenderOptionState) => React.ReactNode;
    selectedOption?: TOption;
    getUnresolvedValueLabel?: (value: TValue) => string;
    groupBy?: (option: TOption) => string;
    renderGroupLabel?: (group: string) => React.ReactNode;
    classes?: Partial<VireoFormAutocompleteFieldClasses>;
    disabled?: boolean;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: TValue, selection: VireoFormAutocompleteFieldSelection<TOption, TValue>) => React.ReactNode;
    required?: boolean;
    error?: boolean;
    errorDisplay?: VireoFormErrorDisplay;
    formatError?: VireoFormErrorFormatter;
    /** Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    fullWidth?: boolean;
    placeholder?: string;
    variant?: TextFieldProps["variant"];
    size?: TextFieldProps["size"];
    color?: TextFieldProps["color"];
    margin?: TextFieldProps["margin"];
    inputRef?: React.Ref<HTMLInputElement>;
    inputValue?: string;
    defaultInputValue?: string;
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    onInputValueChange?: (value: string, reason: VireoFormAutocompleteFieldInputChangeReason) => void;
    onValueChange?: (value: TValue | null, details: VireoFormAutocompleteFieldValueChangeDetails<TOption, TValue>) => void;
    loading?: boolean;
    loadingText?: React.ReactNode;
    noOptionsText?: React.ReactNode;
    disableClearable?: boolean;
    clearOnEscape?: boolean;
    clearLabel?: string;
    openLabel?: string;
    closeLabel?: string;
    open?: boolean;
    defaultOpen?: boolean;
    onOpen?: () => void;
    onClose?: NonNullable<AutocompleteProps<TOption, false, false, false>["onClose"]>;
    clearIcon?: React.ReactNode;
    popupIcon?: React.ReactNode;
};
export type VireoFormAutocompleteFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    error: boolean;
    focused: boolean;
    hasInputValue: boolean;
    hasUnresolvedValue: boolean;
    hasValue: boolean;
    loading: boolean;
    open: boolean;
    readOnly: boolean;
    required: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};
export type VireoFormAutocompleteFieldProps<TOption = unknown, TValue extends VireoFormAutocompleteFieldValue = VireoFormAutocompleteFieldValue> = VireoFormAutocompleteFieldOwnProps<TOption, TValue> & VireoFormAutocompleteFieldInheritedProps<TOption>;
export type VireoFormAutocompleteFieldSelection<TOption, TValue extends VireoFormAutocompleteFieldValue> = {
    value: TValue;
    label: string;
    resolved: boolean;
    option: TOption | null;
};
export type VireoFormAutocompleteFieldSlots = {
    root: React.ElementType;
    textField: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    loadingIndicator: React.ElementType;
    clearButton: React.ElementType;
    clearIcon: React.ElementType;
    popupButton: React.ElementType;
    popupIcon: React.ElementType;
    formHelperText: React.ElementType;
    popper: React.ElementType;
    paper: React.ElementType;
    loadingText: React.ElementType;
    noOptionsText: React.ElementType;
    listbox: React.ElementType;
    option: React.ElementType;
    group: React.ElementType;
    groupLabel: React.ElementType;
    groupList: React.ElementType;
};
export type VireoFormAutocompleteFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormAutocompleteFieldSlots, {
    root: CommonSlotProps<typeof Box>;
    textField: CommonSlotProps<typeof TextField>;
    inputLabel: CommonSlotProps<typeof InputLabel>;
    input: CommonSlotProps<"div">;
    htmlInput: CommonSlotProps<"input">;
    loadingIndicator: CommonSlotProps<typeof CircularProgress>;
    clearButton: CommonSlotProps<typeof IconButton>;
    clearIcon: CommonSlotProps<"svg">;
    popupButton: CommonSlotProps<typeof IconButton>;
    popupIcon: CommonSlotProps<"svg">;
    formHelperText: CommonSlotProps<typeof FormHelperText>;
    popper: CommonSlotProps<typeof Popper>;
    paper: CommonSlotProps<typeof Paper>;
    loadingText: CommonSlotProps<"div">;
    noOptionsText: CommonSlotProps<"div">;
    listbox: CommonSlotProps<"ul">;
    option: CommonSlotProps<"li">;
    group: CommonSlotProps<"li">;
    groupLabel: CommonSlotProps<typeof ListSubheader>;
    groupList: CommonSlotProps<"ul">;
}>;
export type VireoFormAutocompleteFieldValueChangeDetails<TOption, TValue extends VireoFormAutocompleteFieldValue> = {
    reason: "selectOption";
    option: TOption;
    value: TValue;
} | {
    reason: "clear";
    previousValue: TValue | null;
};

Valid keys for VireoFormAutocompleteMultipleField utility classes and theme style overrides.

/** Valid keys for VireoFormAutocompleteMultipleField utility classes and theme style overrides. */
export type VireoFormAutocompleteMultipleFieldClassKey = keyof VireoFormAutocompleteMultipleFieldClasses;

Utility classes available to VireoFormAutocompleteMultipleField.

/** Utility classes available to VireoFormAutocompleteMultipleField. */
export type VireoFormAutocompleteMultipleFieldClasses = Record<VireoFormAutocompleteMultipleFieldSlotName | VireoFormAutocompleteMultipleFieldStateName, string>;
export type VireoFormAutocompleteMultipleFieldOwnProps<TOption, TValue extends VireoFormAutocompleteMultipleFieldValue> = VireoFormAutocompleteMultipleFieldSlotsAndSlotProps & FilterContract<TOption> & {
    label: React.ReactNode;
    options: readonly TOption[];
    getOptionValue: (option: TOption) => TValue;
    getOptionLabel: (option: TOption) => string;
    getOptionDisabled?: (option: TOption) => boolean;
    renderOption?: (option: TOption, state: VireoFormAutocompleteMultipleFieldRenderOptionState) => React.ReactNode;
    selectedOptions?: readonly TOption[];
    getUnresolvedValueLabel?: (value: TValue) => string;
    groupBy?: (option: TOption) => string;
    renderGroupLabel?: (group: string) => React.ReactNode;
    renderSelectedOptions?: (params: VireoFormAutocompleteMultipleFieldRenderSelectedOptionsParams<TOption, TValue>) => React.ReactNode;
    maxDisplayedOptions?: number;
    maxSelectedOptions?: number;
    getHiddenOptionsText?: (count: number) => React.ReactNode;
    getHiddenOptionsLabel?: (count: number) => string;
    getRemoveOptionLabel?: (selection: VireoFormAutocompleteMultipleFieldSelection<TOption, TValue>) => string;
    hideOptionCheckbox?: boolean;
    removeOnBackspace?: boolean;
    classes?: Partial<VireoFormAutocompleteMultipleFieldClasses>;
    disabled?: boolean;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (values: readonly TValue[], selections: readonly VireoFormAutocompleteMultipleFieldSelection<TOption, TValue>[]) => React.ReactNode;
    required?: boolean;
    error?: boolean;
    errorDisplay?: VireoFormErrorDisplay;
    formatError?: VireoFormErrorFormatter;
    /** Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    fullWidth?: boolean;
    placeholder?: string;
    variant?: TextFieldProps["variant"];
    size?: TextFieldProps["size"];
    color?: TextFieldProps["color"];
    margin?: TextFieldProps["margin"];
    inputRef?: React.Ref<HTMLInputElement>;
    inputValue?: string;
    defaultInputValue?: string;
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    onInputValueChange?: (value: string, reason: VireoFormAutocompleteMultipleFieldInputChangeReason) => void;
    onValueChange?: (value: TValue[], details: VireoFormAutocompleteMultipleFieldValueChangeDetails<TOption, TValue>) => void;
    loading?: boolean;
    loadingText?: React.ReactNode;
    noOptionsText?: React.ReactNode;
    disableClearable?: boolean;
    clearOnEscape?: boolean;
    clearLabel?: string;
    openLabel?: string;
    closeLabel?: string;
    open?: boolean;
    defaultOpen?: boolean;
    onOpen?: () => void;
    onClose?: NonNullable<AutocompleteProps<TOption, true, false, false>["onClose"]>;
    clearIcon?: React.ReactNode;
    popupIcon?: React.ReactNode;
};
export type VireoFormAutocompleteMultipleFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    error: boolean;
    focused: boolean;
    hasInputValue: boolean;
    hasUnresolvedValue: boolean;
    hasValue: boolean;
    loading: boolean;
    open: boolean;
    readOnly: boolean;
    required: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
    atSelectionLimit: boolean;
    hasHiddenOptions: boolean;
};
export type VireoFormAutocompleteMultipleFieldProps<TOption = unknown, TValue extends VireoFormAutocompleteMultipleFieldValue = VireoFormAutocompleteMultipleFieldValue> = VireoFormAutocompleteMultipleFieldOwnProps<TOption, TValue> & VireoFormAutocompleteMultipleFieldInheritedProps<TOption>;
export type VireoFormAutocompleteMultipleFieldRenderSelectedOptionsParams<TOption, TValue extends VireoFormAutocompleteMultipleFieldValue> = {
    selections: readonly VireoFormAutocompleteMultipleFieldSelection<TOption, TValue>[];
    displayedSelections: readonly VireoFormAutocompleteMultipleFieldSelection<TOption, TValue>[];
    hiddenCount: number;
    maxDisplayedOptions: number;
    getRemoveButtonProps: (value: TValue) => {
        "aria-label": string;
        disabled: boolean;
        onClick: React.MouseEventHandler<HTMLButtonElement>;
    };
};
export type VireoFormAutocompleteMultipleFieldSelection<TOption, TValue extends VireoFormAutocompleteMultipleFieldValue> = {
    value: TValue;
    label: string;
    resolved: boolean;
    option: TOption | null;
};
export type VireoFormAutocompleteMultipleFieldSlots = {
    root: React.ElementType;
    textField: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    loadingIndicator: React.ElementType;
    clearButton: React.ElementType;
    clearIcon: React.ElementType;
    popupButton: React.ElementType;
    popupIcon: React.ElementType;
    formHelperText: React.ElementType;
    popper: React.ElementType;
    paper: React.ElementType;
    loadingText: React.ElementType;
    noOptionsText: React.ElementType;
    listbox: React.ElementType;
    option: React.ElementType;
    group: React.ElementType;
    groupLabel: React.ElementType;
    groupList: React.ElementType;
    selectedOptions: React.ElementType;
    selectedOption: React.ElementType;
    selectedOptionDeleteIcon: React.ElementType;
    hiddenOptionsButton: React.ElementType;
    optionCheckbox: React.ElementType;
};
export type VireoFormAutocompleteMultipleFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormAutocompleteMultipleFieldSlots, {
    root: CommonSlotProps<typeof Box>;
    textField: CommonSlotProps<typeof TextField>;
    inputLabel: CommonSlotProps<typeof InputLabel>;
    input: CommonSlotProps<"div">;
    htmlInput: CommonSlotProps<"input">;
    loadingIndicator: CommonSlotProps<typeof CircularProgress>;
    clearButton: CommonSlotProps<typeof IconButton>;
    clearIcon: CommonSlotProps<"svg">;
    popupButton: CommonSlotProps<typeof IconButton>;
    popupIcon: CommonSlotProps<"svg">;
    formHelperText: CommonSlotProps<typeof FormHelperText>;
    popper: CommonSlotProps<typeof Popper>;
    paper: CommonSlotProps<typeof Paper>;
    loadingText: CommonSlotProps<"div">;
    noOptionsText: CommonSlotProps<"div">;
    listbox: CommonSlotProps<"ul">;
    option: CommonSlotProps<"li">;
    group: CommonSlotProps<"li">;
    groupLabel: CommonSlotProps<typeof ListSubheader>;
    groupList: CommonSlotProps<"ul">;
    selectedOptions: CommonSlotProps<"div">;
    selectedOption: CommonSlotProps<typeof Chip>;
    selectedOptionDeleteIcon: CommonSlotProps<"svg">;
    hiddenOptionsButton: CommonSlotProps<typeof Button>;
    optionCheckbox: CommonSlotProps<typeof Checkbox>;
}>;
export type VireoFormAutocompleteMultipleFieldValueChangeDetails<TOption, TValue extends VireoFormAutocompleteMultipleFieldValue> = {
    reason: "selectOption";
    option: TOption;
    value: TValue;
} | {
    reason: "removeOption";
    option: TOption | null;
    value: TValue;
} | {
    reason: "clear";
    previousValues: TValue[];
};
export interface VireoFormCheckboxFieldCheckboxSlotPropsOverrides {
    [key: `data-${string}`]: VireoDataAttributeValue;
    /** Compatibility alias merged into MUI's native `input` slot. */
    inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
    /** Compatibility alias forwarded to MUI's native `input` slot. */
    inputRef?: React.Ref<HTMLInputElement>;
}

Valid keys for VireoFormCheckboxField utility classes and theme style overrides.

/** Valid keys for VireoFormCheckboxField utility classes and theme style overrides. */
export type VireoFormCheckboxFieldClassKey = keyof VireoFormCheckboxFieldClasses;

Utility classes available to VireoFormCheckboxField.

/** Utility classes available to VireoFormCheckboxField. */
export type VireoFormCheckboxFieldClasses = Record<VireoFormCheckboxFieldSlotName | VireoFormCheckboxFieldStateName, string>;

Props VireoFormCheckboxField inherits from its default root after excluding component-owned props.

/** Props VireoFormCheckboxField inherits from its default root after excluding component-owned props. */
export type VireoFormCheckboxFieldInheritedProps = Omit<FormControlProps, VireoFormCheckboxFieldComponentOwnedProp>;

Props owned by the bound form checkbox field. The field name and checked value remain owned by `form.Field`.

/** Props owned by the bound form checkbox field. The field name and checked value remain owned by `form.Field`. */
export type VireoFormCheckboxFieldOwnProps = VireoFormCheckboxFieldSlotsAndSlotProps & {
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormCheckboxFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Ref forwarded to the native checkbox input. */
    inputRef?: React.Ref<HTMLInputElement>;
    /** Visible accessible label rendered beside the checkbox. */
    label: React.ReactNode;
    /** @default 'end' */
    labelPlacement?: FormControlLabelProps["labelPlacement"];
    onBlur?: NonNullable<CheckboxProps["onBlur"]>;
    onChange?: NonNullable<CheckboxProps["onChange"]>;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: boolean) => React.ReactNode;
    required?: boolean;
};
export type VireoFormCheckboxFieldOwnerState = {
    checked: boolean;
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    invalid: boolean;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.CheckboxField`.

/** Props accepted by `field.CheckboxField`. */
export type VireoFormCheckboxFieldProps = VireoFormCheckboxFieldOwnProps & VireoFormCheckboxFieldInheritedProps;

Replaceable semantic regions exposed by the bound form checkbox field.

/** Replaceable semantic regions exposed by the bound form checkbox field. */
export type VireoFormCheckboxFieldSlots = {
    root: React.ElementType;
    formControlLabel: React.ElementType;
    checkbox: React.ElementType;
    label: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound form checkbox field.

/** Slot props exposed by the bound form checkbox field. */
export type VireoFormCheckboxFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormCheckboxFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormCheckboxFieldRootSlotPropsOverrides, VireoFormCheckboxFieldOwnerState>;
    /** @default FormControlLabel */
    formControlLabel: SlotProps<typeof FormControlLabel, VireoFormCheckboxFieldFormControlLabelSlotPropsOverrides, VireoFormCheckboxFieldOwnerState>;
    /** @default Checkbox */
    checkbox: SlotProps<typeof Checkbox, VireoFormCheckboxFieldCheckboxSlotPropsOverrides, VireoFormCheckboxFieldOwnerState>;
    /** @default Typography */
    label: SlotProps<typeof Typography, VireoFormCheckboxFieldLabelSlotPropsOverrides, VireoFormCheckboxFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormCheckboxFieldFormHelperTextSlotPropsOverrides, VireoFormCheckboxFieldOwnerState>;
}>;

Valid keys for VireoForm utility classes and theme style overrides.

/** Valid keys for VireoForm utility classes and theme style overrides. */
export type VireoFormClassKey = keyof VireoFormClasses;

Utility classes available to VireoForm.

/** Utility classes available to VireoForm. */
export type VireoFormClasses = Record<VireoFormSlotName | VireoFormStateName, string>;

Accessible naming contract for the counter and its numeric input.

/** Accessible naming contract for the counter and its numeric input. */
export type VireoFormCounterFieldAccessibleNameProps = {
    "aria-label": string;
    "aria-labelledby"?: string;
} | {
    "aria-label"?: undefined;
    "aria-labelledby": string;
};

Valid keys for VireoFormCounterField utility classes and theme style overrides.

/** Valid keys for VireoFormCounterField utility classes and theme style overrides. */
export type VireoFormCounterFieldClassKey = keyof VireoFormCounterFieldClasses;

Utility classes available to VireoFormCounterField.

/** Utility classes available to VireoFormCounterField. */
export type VireoFormCounterFieldClasses = Record<VireoFormCounterFieldSlotName | VireoFormCounterFieldStateName, string>;

Props VireoFormCounterField inherits from its default root after excluding component-owned props.

/** Props VireoFormCounterField inherits from its default root after excluding component-owned props. */
export type VireoFormCounterFieldInheritedProps = Omit<FormControlProps, ComponentOwnedProp>;

Props owned by the bound counter field. The field name and value remain owned by `form.Field`.

/** Props owned by the bound counter field. The field name and value remain owned by `form.Field`. */
export type VireoFormCounterFieldOwnProps = VireoFormCounterFieldSlotsAndSlotProps & {
    classes?: Partial<VireoFormCounterFieldClasses>;
    disabled?: boolean;
    /** Accessible label for the decrement control. @default 'Decrease' */
    decrementLabel?: string;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Accessible label for the increment control. @default 'Increase' */
    incrementLabel?: string;
    /** Ref forwarded to the native numeric text input. */
    inputRef?: React.Ref<HTMLInputElement>;
    /** Largest value emitted by user interaction. */
    max?: number;
    /** Smallest value emitted by user interaction. */
    min?: number;
    onBlur?: React.FocusEventHandler<HTMLDivElement>;
    onChange?: React.ChangeEventHandler<HTMLInputElement>;
    /** Called after a complete edit or step resolves to a different stored value. */
    onValueChange?: (value: number | null) => void;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: number) => React.ReactNode;
    required?: boolean;
    /** @default 'medium' */
    size?: VireoFormCounterFieldSize;
    /** Positive finite amount used by buttons and Arrow keys. @default 1 */
    step?: number;
    /** Additional description IDs applied to the numeric input. */
    "aria-describedby"?: string;
};
export type VireoFormCounterFieldOwnerState = {
    atMax: boolean;
    atMin: boolean;
    decrementDisabled: boolean;
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    fullWidth: boolean;
    hasValue: boolean;
    incrementDisabled: boolean;
    invalid: boolean;
    max: number | undefined;
    min: number | undefined;
    readOnly: boolean;
    required: boolean;
    size: VireoFormCounterFieldSize;
    step: number;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.CounterField`.

/** Props accepted by `field.CounterField`. */
export type VireoFormCounterFieldProps = VireoFormCounterFieldOwnProps & VireoFormCounterFieldAccessibleNameProps & VireoFormCounterFieldInheritedProps;

Replaceable semantic regions exposed by the bound counter field.

/** Replaceable semantic regions exposed by the bound counter field. */
export type VireoFormCounterFieldSlots = {
    root: React.ElementType;
    input: React.ElementType;
    decrementButton: React.ElementType;
    decrementIcon: React.ElementType;
    htmlInput: React.ElementType;
    incrementButton: React.ElementType;
    incrementIcon: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound counter field.

/** Slot props exposed by the bound counter field. */
export type VireoFormCounterFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormCounterFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormCounterFieldRootSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default OutlinedInput */
    input: SlotProps<typeof OutlinedInput, VireoFormCounterFieldInputSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default IconButton */
    decrementButton: SlotProps<typeof IconButton, VireoFormCounterFieldDecrementButtonSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default RemoveIcon */
    decrementIcon: SlotProps<typeof SvgIcon, VireoFormCounterFieldDecrementIconSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default 'input' */
    htmlInput: SlotProps<"input", VireoFormCounterFieldHtmlInputSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default IconButton */
    incrementButton: SlotProps<typeof IconButton, VireoFormCounterFieldIncrementButtonSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default AddIcon */
    incrementIcon: SlotProps<typeof SvgIcon, VireoFormCounterFieldIncrementIconSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormCounterFieldFormHelperTextSlotPropsOverrides, VireoFormCounterFieldOwnerState>;
}>;

Controls when field errors are presented without changing validation timing.

/** Controls when field errors are presented without changing validation timing. */
export type VireoFormErrorDisplay = "always" | "never" | "touched-or-submitted" | VireoFormErrorDisplayPredicate;
export type VireoFormErrorDisplayPredicate = (context: {
    submissionAttempts: number;
    touched: boolean;
}) => boolean;

Converts a validation error into consumer-facing helper text.

/** Converts a validation error into consumer-facing helper text. */
export type VireoFormErrorFormatter = (error: unknown) => string | undefined;

Valid keys for VireoFormErrorSummary utility classes and theme style overrides.

/** Valid keys for VireoFormErrorSummary utility classes and theme style overrides. */
export type VireoFormErrorSummaryClassKey = keyof VireoFormErrorSummaryClasses;

Utility classes available to VireoFormErrorSummary.

/** Utility classes available to VireoFormErrorSummary. */
export type VireoFormErrorSummaryClasses = Record<VireoFormErrorSummarySlotName, string>;
export type VireoFormErrorSummaryInheritedProps = Omit<AlertProps, "children" | "icon" | "ref" | "severity" | "slotProps" | "slots" | "title">;
export type VireoFormErrorSummaryLocaleText = {
    title: (context: {
        count: number;
    }) => string;
    formGroupLabel: string;
    otherGroupLabel: string;
    navigateToError: (context: {
        message: string;
    }) => string;
};
export type VireoFormErrorSummaryOwnProps = VireoFormErrorSummarySlotsAndSlotProps & {
    classes?: Partial<VireoFormErrorSummaryClasses>;
    localeText?: Partial<VireoFormErrorSummaryLocaleText>;
    /** Includes only form-level errors or every field error grouped by step. @default 'form' */
    scope?: VireoFormErrorSummaryScope;
    /** Replaces the generated error-count heading. */
    title?: React.ReactNode;
};
export type VireoFormErrorSummaryProps = VireoFormErrorSummaryOwnProps & VireoFormErrorSummaryInheritedProps;
export type VireoFormErrorSummarySlots = {
    [T in VireoFormErrorSummarySlotName]: React.ElementType;
};
export type VireoFormErrorSummarySlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormErrorSummarySlots, {
    /** @default Alert */
    root: SlotProps<typeof Alert, VireoFormErrorSummaryRootSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default 'span' */
    icon: SlotProps<typeof Box, VireoFormErrorSummaryIconSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default Box */
    content: SlotProps<typeof Box, VireoFormErrorSummaryContentSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default Typography */
    title: SlotProps<typeof Typography, VireoFormErrorSummaryTitleSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default Box */
    group: SlotProps<typeof Box, VireoFormErrorSummaryGroupSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default Typography */
    groupLabel: SlotProps<typeof Typography, VireoFormErrorSummaryGroupLabelSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default 'ul' */
    list: SlotProps<typeof Box, VireoFormErrorSummaryListSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default 'li' */
    item: SlotProps<typeof Box, VireoFormErrorSummaryItemSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
    /** @default ButtonBase */
    itemButton: SlotProps<typeof ButtonBase, VireoFormErrorSummaryItemButtonSlotPropsOverrides, VireoFormErrorSummaryOwnerState>;
}>;

Valid keys for VireoFormFileField utility classes and theme style overrides.

/** Valid keys for VireoFormFileField utility classes and theme style overrides. */
export type VireoFormFileFieldClassKey = keyof VireoFormFileFieldClasses;

Utility classes available to VireoFormFileField.

/** Utility classes available to VireoFormFileField. */
export type VireoFormFileFieldClasses = Record<VireoFormFileFieldSlotName | "empty" | "populated" | "dragActive" | "dragReject" | "rejected" | "invalid" | "disabled" | "readOnly", string>;

Props VireoFormFileField inherits from its default root after excluding component-owned props.

/** Props VireoFormFileField inherits from its default root after excluding component-owned props. */
export type VireoFormFileFieldInheritedProps = Omit<BoxProps<"div">, "children" | "component" | "onChange" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop">;
export type VireoFormFileFieldOwnProps = VireoFormFileFieldSlotsAndSlotProps & {
    /** Native file-accept filter. Exact MIME types, MIME wildcards, and extensions are enforced for picker and drop selection. */
    accept?: string;
    /** Native camera or microphone capture hint. */
    capture?: boolean | "user" | "environment";
    /** Content of the selection action while the value is empty. @default 'Choose file' */
    chooseFileLabel?: React.ReactNode;
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormFileFieldClasses>;
    /** Whether a selected file can be cleared. @default true */
    clearable?: boolean;
    /** Accessible label for the clear action. @default 'Clear selected file' */
    clearFileLabel?: string;
    disabled?: boolean;
    /** Disables drag-and-drop selection while preserving the picker action. @default false */
    disableDrop?: boolean;
    /** Content shown over the field while an acceptable file is dragged across it. @default 'Drop file here' */
    dropActiveText?: React.ReactNode;
    /** Metadata text shown while the bound value is null. @default 'No file selected' */
    emptyText?: React.ReactNode;
    /** Adds an error presentation state without suppressing validation or rejection errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Responsive filename-overflow strategy. @default 'middle' */
    fileNameTruncation?: VireoFormFileNameTruncation;
    /** Message shown when an otherwise accepted file exceeds `maxSize`. */
    fileTooLargeText?: React.ReactNode | ((file: File, maxSize: number) => React.ReactNode);
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** Formats the selected file's byte size. Uses decimal units by default. */
    formatFileSize?: (bytes: number) => React.ReactNode;
    /** Shown when neither a local rejection nor a visible form error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Hides selected-file size metadata. @default false */
    hideFileSize?: boolean;
    /** Ref forwarded to the hidden native file input. */
    inputRef?: React.Ref<HTMLInputElement>;
    /** Maximum accepted file size in bytes. */
    maxSize?: number;
    /** Observes a locally rejected file after type or size checks. */
    onFileRejected?: (rejection: VireoFileRejection) => void;
    /** Opt-in renderer placed on a dedicated row beneath selected-file metadata. */
    previewRenderer?: VireoFilePreviewRenderer;
    /** Prevents picker, drop, and clear changes while retaining normal presentation. */
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (file: File) => React.ReactNode;
    /** Content of the selection action while a value exists. @default 'Replace file' */
    replaceFileLabel?: React.ReactNode;
    /** Adds native required semantics; validation remains owned by TanStack Form or the supplied schema. */
    required?: boolean;
    /** Message shown when a file does not match `accept`. @default 'This file type is not accepted.' */
    unsupportedTypeText?: React.ReactNode | ((file: File) => React.ReactNode);
};
export type VireoFormFileFieldOwnerState = {
    disabled: boolean;
    dragActive: boolean;
    dragReject: boolean;
    empty: boolean;
    errorVisible: boolean;
    invalid: boolean;
    populated: boolean;
    readOnly: boolean;
    rejected: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.FileField`.

/** Props accepted by `field.FileField`. */
export type VireoFormFileFieldProps = VireoFormFileFieldOwnProps & VireoFormFileFieldInheritedProps;
export type VireoFormFileFieldSlots = {
    [TSlotName in VireoFormFileFieldSlotName]: React.ElementType;
};
export type VireoFormFileFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormFileFieldSlots, {
    /** @default Box */
    root: SlotProps<typeof Box, VireoFormFileFieldRootSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Box */
    selection: SlotProps<typeof Box, VireoFormFileFieldSelectionSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default 'input' */
    input: SlotProps<"input", VireoFormFileFieldInputSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Button */
    selectButton: SlotProps<typeof Button, VireoFormFileFieldSelectButtonSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Box */
    metadata: SlotProps<typeof Box, VireoFormFileFieldMetadataSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Typography */
    fileName: SlotProps<typeof Typography, VireoFormFileFieldFileNameSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Typography */
    fileSize: SlotProps<typeof Typography, VireoFormFileFieldFileSizeSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default IconButton */
    clearButton: SlotProps<typeof IconButton, VireoFormFileFieldClearButtonSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Box */
    dropOverlay: SlotProps<typeof Box, VireoFormFileFieldDropOverlaySlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default Box */
    previewContainer: SlotProps<typeof Box, VireoFormFileFieldPreviewContainerSlotPropsOverrides, VireoFormFileFieldOwnerState>;
    /** @default FormHelperText */
    helperText: SlotProps<typeof FormHelperText, VireoFormFileFieldHelperTextSlotPropsOverrides, VireoFormFileFieldOwnerState>;
}>;

Valid keys for VireoFormFileListField utility classes and theme style overrides.

/** Valid keys for VireoFormFileListField utility classes and theme style overrides. */
export type VireoFormFileListFieldClassKey = keyof VireoFormFileListFieldClasses;

Utility classes available to VireoFormFileListField.

/** Utility classes available to VireoFormFileListField. */
export type VireoFormFileListFieldClasses = Record<VireoFormFileListFieldSlotName | VireoFormFileListFieldStateClass, string>;

Props VireoFormFileListField inherits from its default root after excluding component-owned props.

/** Props VireoFormFileListField inherits from its default root after excluding component-owned props. */
export type VireoFormFileListFieldInheritedProps = Omit<BoxProps<"div">, "children" | "component" | "onChange" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop">;
export type VireoFormFileListFieldOwnProps = VireoFormFileListFieldSlotsAndSlotProps & {
    /** Native file-accept filter enforced for picker and drop selection. */
    accept?: string;
    /** Content of the selection action after files exist. @default 'Add more files' */
    addMoreFilesLabel?: React.ReactNode;
    /** Allows files with the same resolved identity. @default false */
    allowDuplicates?: boolean;
    /** Native camera or microphone capture hint. */
    capture?: boolean | "user" | "environment";
    /** Content shown when additions are unavailable because capacity is exhausted. */
    capacityReachedText?: React.ReactNode | ((reason: VireoFileListCapacityReason, limit: number) => React.ReactNode);
    /** Content of the selection action while the collection is empty. @default 'Choose files' */
    chooseFilesLabel?: React.ReactNode;
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormFileListFieldClasses>;
    /** Whether selected files can be removed. @default true */
    clearable?: boolean;
    /** Visible clear-all action content. @default 'Clear all' */
    clearAllLabel?: React.ReactNode;
    /** Accessible label for clear-all. @default 'Clear all selected files' */
    clearAllFilesLabel?: string;
    disabled?: boolean;
    /** Disables external drag-and-drop selection while preserving the picker. @default false */
    disableDrop?: boolean;
    /** Content shown while acceptable files are dragged over the chooser. @default 'Drop files here' */
    dropActiveText?: React.ReactNode;
    /** Persistent guidance shown in the chooser. @default 'or drag and drop files here' */
    dropHint?: React.ReactNode;
    /** Adds an error presentation state without suppressing validation or rejection errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Responsive filename-overflow strategy. @default 'middle' */
    fileNameTruncation?: VireoFormFileNameTruncation;
    /** Describes one file's position to assistive technology. */
    filePositionText?: (file: File, index: number, count: number) => string;
    /** Message shown when an otherwise accepted file exceeds `maxSize`. */
    fileTooLargeText?: React.ReactNode | ((file: File, maxSize: number) => React.ReactNode);
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** Formats the compact collection count. */
    formatFileCount?: (count: number, maxFiles: number | undefined) => React.ReactNode;
    /** Formats individual and total byte sizes. Uses decimal units by default. */
    formatFileSize?: (bytes: number) => React.ReactNode;
    /** Resolves duplicate identity. Defaults to name, size, lastModified, and type. */
    getFileKey?: (file: File) => string;
    /** Shown beneath local rejections and the list. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Hides the clear-all action. @default false */
    hideClearAll?: boolean;
    /** Hides per-file size metadata. @default false */
    hideFileSize?: boolean;
    /** Ref forwarded to the hidden native file input. */
    inputRef?: React.Ref<HTMLInputElement>;
    /** Maximum number of accepted files. */
    maxFiles?: number;
    /** Message shown for a candidate beyond `maxFiles`. */
    maxFilesText?: React.ReactNode | ((file: File, maxFiles: number) => React.ReactNode);
    /** Maximum accepted size of one file in bytes. */
    maxSize?: number;
    /** Maximum accepted aggregate size in bytes. */
    maxTotalSize?: number;
    /** Message shown when a candidate would exceed `maxTotalSize`. */
    maxTotalSizeText?: React.ReactNode | ((file: File, maxTotalSize: number) => React.ReactNode);
    /** Message shown when a candidate duplicates another selected file. */
    duplicateFileText?: React.ReactNode | ((file: File) => React.ReactNode);
    /** Observes files accepted from one picker or drop operation. */
    onFilesAdded?: (addedFiles: readonly File[], nextFiles: readonly File[]) => void;
    /** Observes files cleared together. */
    onFilesCleared?: (files: readonly File[]) => void;
    /** Observes all candidates rejected by one picker or drop operation. */
    onFilesRejected?: (rejections: readonly VireoFileListRejection[]) => void;
    /** Observes one removed file. */
    onFileRemoved?: (file: File, index: number) => void;
    /** Opt-in renderer placed on a dedicated row beneath each file's metadata. */
    previewRenderer?: VireoFilePreviewRenderer;
    /** Prevents picker, drop, removal, clear-all, and reordering while retaining normal presentation. */
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (files: readonly File[]) => React.ReactNode;
    /** Accessible label for one reorder handle. */
    reorderFileLabel?: (file: File, index: number, count: number) => string;
    /** Announcement emitted after a successful reorder. */
    reorderAnnouncement?: (file: File, previousIndex: number, nextIndex: number, count: number) => string;
    /** Enables pointer and keyboard reordering. @default false */
    reorderable?: boolean;
    /** Accessible label for one remove action. */
    removeFileLabel?: (file: File, index: number) => string;
    /** Marks the collection as required for presentation and accessibility. */
    required?: boolean;
    /** Controls whether the root fills its containing width. @default true */
    fullWidth?: boolean;
    /** Message shown when a candidate does not match `accept`. */
    unsupportedTypeText?: React.ReactNode | ((file: File) => React.ReactNode);
};
export type VireoFormFileListFieldOwnerState = {
    capacityReached: boolean;
    clearable: boolean;
    disabled: boolean;
    dragActive: boolean;
    dragReject: boolean;
    dropDisabled: boolean;
    empty: boolean;
    errorVisible: boolean;
    fileCount: number;
    fullWidth: boolean;
    invalid: boolean;
    maxFiles: number | undefined;
    maxTotalSize: number | undefined;
    populated: boolean;
    readOnly: boolean;
    rejected: boolean;
    reordering: boolean;
    reorderable: boolean;
    required: boolean;
    submitting: boolean;
    totalSize: number;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.FileListField`.

/** Props accepted by `field.FileListField`. */
export type VireoFormFileListFieldProps = VireoFormFileListFieldOwnProps & VireoFormFileListFieldInheritedProps;
export type VireoFormFileListFieldRowOwnerState = VireoFormFileListFieldOwnerState & {
    count: number;
    dragging: boolean;
    file: File;
    first: boolean;
    index: number;
    last: boolean;
    previewed: boolean;
};
export type VireoFormFileListFieldSlots = {
    [TSlotName in VireoFormFileListFieldSlotName]: React.ElementType;
};
export type VireoFormFileListFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormFileListFieldSlots, {
    /** @default Box */
    root: SlotProps<typeof Box, VireoFormFileListFieldRootSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default 'input' */
    input: SlotProps<"input", VireoFormFileListFieldInputSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Box */
    chooser: SlotProps<typeof Box, VireoFormFileListFieldChooserSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Button */
    selectButton: SlotProps<typeof Button, VireoFormFileListFieldSelectButtonSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Typography */
    dropHint: SlotProps<typeof Typography, VireoFormFileListFieldDropHintSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Typography */
    capacityText: SlotProps<typeof Typography, VireoFormFileListFieldCapacityTextSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Box */
    toolbar: SlotProps<typeof Box, VireoFormFileListFieldToolbarSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Typography */
    fileCount: SlotProps<typeof Typography, VireoFormFileListFieldFileCountSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Button */
    clearAllButton: SlotProps<typeof Button, VireoFormFileListFieldClearAllButtonSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Box */
    list: SlotProps<typeof Box, VireoFormFileListFieldListSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Box */
    fileRow: SlotProps<typeof Box, VireoFormFileListFieldFileRowSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default IconButton */
    reorderHandle: SlotProps<typeof IconButton, VireoFormFileListFieldReorderHandleSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default Box */
    metadata: SlotProps<typeof Box, VireoFormFileListFieldMetadataSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default Typography */
    fileName: SlotProps<typeof Typography, VireoFormFileListFieldFileNameSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default Typography */
    fileSize: SlotProps<typeof Typography, VireoFormFileListFieldFileSizeSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default IconButton */
    removeButton: SlotProps<typeof IconButton, VireoFormFileListFieldRemoveButtonSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default Box */
    previewContainer: SlotProps<typeof Box, VireoFormFileListFieldPreviewContainerSlotPropsOverrides, VireoFormFileListFieldRowOwnerState>;
    /** @default Box */
    rejectionList: SlotProps<typeof Box, VireoFormFileListFieldRejectionListSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Typography */
    rejectionItem: SlotProps<typeof Typography, VireoFormFileListFieldRejectionItemSlotPropsOverrides, VireoFormFileListFieldRejectionOwnerState>;
    /** @default FormHelperText */
    helperText: SlotProps<typeof FormHelperText, VireoFormFileListFieldHelperTextSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
    /** @default Typography */
    liveRegion: SlotProps<typeof Typography, VireoFormFileListFieldLiveRegionSlotPropsOverrides, VireoFormFileListFieldOwnerState>;
}>;
export type VireoFormFileListFieldStateClass = "empty" | "populated" | "dragActive" | "dragReject" | "rejected" | "invalid" | "disabled" | "readOnly" | "required" | "fullWidth" | "reorderable" | "capacityReached" | "reordering" | "submitting" | "validating";

Responsive filename-overflow strategies shared by Vireo file fields.

/** Responsive filename-overflow strategies shared by Vireo file fields. */
export type VireoFormFileNameTruncation = "middle" | "end" | "none";

Valid keys for VireoFormFreeSoloAutocompleteField utility classes and theme style overrides.

/** Valid keys for VireoFormFreeSoloAutocompleteField utility classes and theme style overrides. */
export type VireoFormFreeSoloAutocompleteFieldClassKey = keyof VireoFormFreeSoloAutocompleteFieldClasses;

Utility classes available to VireoFormFreeSoloAutocompleteField.

/** Utility classes available to VireoFormFreeSoloAutocompleteField. */
export type VireoFormFreeSoloAutocompleteFieldClasses = Record<VireoFormFreeSoloAutocompleteFieldSlotName | VireoFormFreeSoloAutocompleteFieldStateName, string>;
export type VireoFormFreeSoloAutocompleteFieldOwnProps<TOption> = VireoFormFreeSoloAutocompleteFieldSlotsAndSlotProps & FilterContract<TOption> & {
    label: React.ReactNode;
    options: readonly TOption[];
    getOptionValue: (option: TOption) => string;
    getOptionLabel: (option: TOption) => string;
    getOptionDisabled?: (option: TOption) => boolean;
    renderOption?: (option: TOption, state: VireoFormFreeSoloAutocompleteFieldRenderOptionState) => React.ReactNode;
    createOptionLabel?: (value: string) => React.ReactNode;
    normalizeValue?: (value: string) => string;
    isValueEqual?: (left: string, right: string) => boolean;
    commitOnBlur?: boolean;
    groupBy?: (option: TOption) => string;
    renderGroupLabel?: (group: string) => React.ReactNode;
    classes?: Partial<VireoFormFreeSoloAutocompleteFieldClasses>;
    disabled?: boolean;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: string, selection: VireoFormFreeSoloAutocompleteFieldSelection<TOption>) => React.ReactNode;
    required?: boolean;
    error?: boolean;
    errorDisplay?: VireoFormErrorDisplay;
    formatError?: VireoFormErrorFormatter;
    /** Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    fullWidth?: boolean;
    placeholder?: string;
    variant?: TextFieldProps["variant"];
    size?: TextFieldProps["size"];
    color?: TextFieldProps["color"];
    margin?: TextFieldProps["margin"];
    inputRef?: React.Ref<HTMLInputElement>;
    inputValue?: string;
    defaultInputValue?: string;
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    onInputValueChange?: (value: string, reason: VireoFormFreeSoloAutocompleteFieldInputChangeReason) => void;
    onValueChange?: (value: string | null, details: VireoFormFreeSoloAutocompleteFieldValueChangeDetails<TOption>) => void;
    loading?: boolean;
    loadingText?: React.ReactNode;
    noOptionsText?: React.ReactNode;
    disableClearable?: boolean;
    clearOnEscape?: boolean;
    clearLabel?: string;
    openLabel?: string;
    closeLabel?: string;
    open?: boolean;
    defaultOpen?: boolean;
    onOpen?: () => void;
    onClose?: NonNullable<AutocompleteProps<TOption, false, false, true>["onClose"]>;
    clearIcon?: React.ReactNode;
    popupIcon?: React.ReactNode;
};
export type VireoFormFreeSoloAutocompleteFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    error: boolean;
    focused: boolean;
    hasInputValue: boolean;
    hasValue: boolean;
    loading: boolean;
    open: boolean;
    readOnly: boolean;
    required: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};
export type VireoFormFreeSoloAutocompleteFieldProps<TOption = string> = VireoFormFreeSoloAutocompleteFieldOwnProps<TOption> & VireoFormFreeSoloAutocompleteFieldInheritedProps<TOption>;
export type VireoFormFreeSoloAutocompleteFieldSlots = {
    root: React.ElementType;
    textField: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    loadingIndicator: React.ElementType;
    clearButton: React.ElementType;
    clearIcon: React.ElementType;
    popupButton: React.ElementType;
    popupIcon: React.ElementType;
    formHelperText: React.ElementType;
    popper: React.ElementType;
    paper: React.ElementType;
    loadingText: React.ElementType;
    noOptionsText: React.ElementType;
    listbox: React.ElementType;
    option: React.ElementType;
    group: React.ElementType;
    groupLabel: React.ElementType;
    groupList: React.ElementType;
};
export type VireoFormFreeSoloAutocompleteFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormFreeSoloAutocompleteFieldSlots, {
    root: CommonSlotProps<typeof Box>;
    textField: CommonSlotProps<typeof TextField>;
    inputLabel: CommonSlotProps<typeof InputLabel>;
    input: CommonSlotProps<"div">;
    htmlInput: CommonSlotProps<"input">;
    loadingIndicator: CommonSlotProps<typeof CircularProgress>;
    clearButton: CommonSlotProps<typeof IconButton>;
    clearIcon: CommonSlotProps<"svg">;
    popupButton: CommonSlotProps<typeof IconButton>;
    popupIcon: CommonSlotProps<"svg">;
    formHelperText: CommonSlotProps<typeof FormHelperText>;
    popper: CommonSlotProps<typeof Popper>;
    paper: CommonSlotProps<typeof Paper>;
    loadingText: CommonSlotProps<"div">;
    noOptionsText: CommonSlotProps<"div">;
    listbox: CommonSlotProps<"ul">;
    option: CommonSlotProps<"li">;
    group: CommonSlotProps<"li">;
    groupLabel: CommonSlotProps<typeof ListSubheader>;
    groupList: CommonSlotProps<"ul">;
}>;
export type VireoFormFreeSoloAutocompleteFieldValueChangeDetails<TOption> = {
    reason: "selectOption";
    option: TOption;
    value: string;
} | {
    reason: "createOption";
    value: string;
} | {
    reason: "clear";
    previousValue: string | null;
};

Valid keys for VireoFormFreeSoloAutocompleteMultipleField utility classes and theme style overrides.

/** Valid keys for VireoFormFreeSoloAutocompleteMultipleField utility classes and theme style overrides. */
export type VireoFormFreeSoloAutocompleteMultipleFieldClassKey = keyof VireoFormFreeSoloAutocompleteMultipleFieldClasses;

Utility classes available to VireoFormFreeSoloAutocompleteMultipleField.

/** Utility classes available to VireoFormFreeSoloAutocompleteMultipleField. */
export type VireoFormFreeSoloAutocompleteMultipleFieldClasses = Record<VireoFormFreeSoloAutocompleteMultipleFieldSlotName | VireoFormFreeSoloAutocompleteMultipleFieldStateName, string>;
export type VireoFormFreeSoloAutocompleteMultipleFieldOwnProps<TOption> = VireoFormFreeSoloAutocompleteMultipleFieldSlotsAndSlotProps & FilterContract<TOption> & {
    label: React.ReactNode;
    options: readonly TOption[];
    getOptionValue: (option: TOption) => string;
    getOptionLabel: (option: TOption) => string;
    getOptionDisabled?: (option: TOption) => boolean;
    renderOption?: (option: TOption, state: VireoFormFreeSoloAutocompleteMultipleFieldRenderOptionState) => React.ReactNode;
    createOptionLabel?: (value: string) => React.ReactNode;
    normalizeValue?: (value: string) => string;
    isValueEqual?: (left: string, right: string) => boolean;
    commitOnBlur?: boolean;
    groupBy?: (option: TOption) => string;
    renderGroupLabel?: (group: string) => React.ReactNode;
    renderSelectedOptions?: (params: VireoFormFreeSoloAutocompleteMultipleFieldRenderSelectedOptionsParams<TOption>) => React.ReactNode;
    maxDisplayedOptions?: number;
    maxSelectedOptions?: number;
    getHiddenOptionsText?: (count: number) => React.ReactNode;
    getHiddenOptionsLabel?: (count: number) => string;
    getRemoveOptionLabel?: (selection: VireoFormFreeSoloAutocompleteMultipleFieldSelection<TOption>) => string;
    hideOptionCheckbox?: boolean;
    removeOnBackspace?: boolean;
    classes?: Partial<VireoFormFreeSoloAutocompleteMultipleFieldClasses>;
    disabled?: boolean;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (values: readonly string[], selections: readonly VireoFormFreeSoloAutocompleteMultipleFieldSelection<TOption>[]) => React.ReactNode;
    required?: boolean;
    error?: boolean;
    errorDisplay?: VireoFormErrorDisplay;
    formatError?: VireoFormErrorFormatter;
    /** Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    fullWidth?: boolean;
    placeholder?: string;
    variant?: TextFieldProps["variant"];
    size?: TextFieldProps["size"];
    color?: TextFieldProps["color"];
    margin?: TextFieldProps["margin"];
    inputRef?: React.Ref<HTMLInputElement>;
    inputValue?: string;
    defaultInputValue?: string;
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    onInputValueChange?: (value: string, reason: VireoFormFreeSoloAutocompleteMultipleFieldInputChangeReason) => void;
    onValueChange?: (value: string[], details: VireoFormFreeSoloAutocompleteMultipleFieldValueChangeDetails<TOption>) => void;
    loading?: boolean;
    loadingText?: React.ReactNode;
    noOptionsText?: React.ReactNode;
    disableClearable?: boolean;
    clearOnEscape?: boolean;
    clearLabel?: string;
    openLabel?: string;
    closeLabel?: string;
    open?: boolean;
    defaultOpen?: boolean;
    onOpen?: () => void;
    onClose?: NonNullable<AutocompleteProps<TOption, true, false, true>["onClose"]>;
    clearIcon?: React.ReactNode;
    popupIcon?: React.ReactNode;
};
export type VireoFormFreeSoloAutocompleteMultipleFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    error: boolean;
    focused: boolean;
    hasInputValue: boolean;
    hasValue: boolean;
    loading: boolean;
    open: boolean;
    readOnly: boolean;
    required: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
    atSelectionLimit: boolean;
    hasHiddenOptions: boolean;
};
export type VireoFormFreeSoloAutocompleteMultipleFieldProps<TOption = string> = VireoFormFreeSoloAutocompleteMultipleFieldOwnProps<TOption> & VireoFormFreeSoloAutocompleteMultipleFieldInheritedProps<TOption>;
export type VireoFormFreeSoloAutocompleteMultipleFieldRenderSelectedOptionsParams<TOption> = {
    selections: readonly VireoFormFreeSoloAutocompleteMultipleFieldSelection<TOption>[];
    displayedSelections: readonly VireoFormFreeSoloAutocompleteMultipleFieldSelection<TOption>[];
    hiddenCount: number;
    maxDisplayedOptions: number;
    getRemoveButtonProps: (value: string) => {
        "aria-label": string;
        disabled: boolean;
        onClick: React.MouseEventHandler<HTMLButtonElement>;
    };
};
export type VireoFormFreeSoloAutocompleteMultipleFieldSlots = {
    root: React.ElementType;
    textField: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    loadingIndicator: React.ElementType;
    clearButton: React.ElementType;
    clearIcon: React.ElementType;
    popupButton: React.ElementType;
    popupIcon: React.ElementType;
    formHelperText: React.ElementType;
    popper: React.ElementType;
    paper: React.ElementType;
    loadingText: React.ElementType;
    noOptionsText: React.ElementType;
    listbox: React.ElementType;
    option: React.ElementType;
    group: React.ElementType;
    groupLabel: React.ElementType;
    groupList: React.ElementType;
    selectedOptions: React.ElementType;
    selectedOption: React.ElementType;
    selectedOptionDeleteIcon: React.ElementType;
    hiddenOptionsButton: React.ElementType;
    optionCheckbox: React.ElementType;
};
export type VireoFormFreeSoloAutocompleteMultipleFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormFreeSoloAutocompleteMultipleFieldSlots, {
    root: CommonSlotProps<typeof Box>;
    textField: CommonSlotProps<typeof TextField>;
    inputLabel: CommonSlotProps<typeof InputLabel>;
    input: CommonSlotProps<"div">;
    htmlInput: CommonSlotProps<"input">;
    loadingIndicator: CommonSlotProps<typeof CircularProgress>;
    clearButton: CommonSlotProps<typeof IconButton>;
    clearIcon: CommonSlotProps<"svg">;
    popupButton: CommonSlotProps<typeof IconButton>;
    popupIcon: CommonSlotProps<"svg">;
    formHelperText: CommonSlotProps<typeof FormHelperText>;
    popper: CommonSlotProps<typeof Popper>;
    paper: CommonSlotProps<typeof Paper>;
    loadingText: CommonSlotProps<"div">;
    noOptionsText: CommonSlotProps<"div">;
    listbox: CommonSlotProps<"ul">;
    option: CommonSlotProps<"li">;
    group: CommonSlotProps<"li">;
    groupLabel: CommonSlotProps<typeof ListSubheader>;
    groupList: CommonSlotProps<"ul">;
    selectedOptions: CommonSlotProps<"div">;
    selectedOption: CommonSlotProps<typeof Chip>;
    selectedOptionDeleteIcon: CommonSlotProps<"svg">;
    hiddenOptionsButton: CommonSlotProps<typeof Button>;
    optionCheckbox: CommonSlotProps<typeof Checkbox>;
}>;
export type VireoFormFreeSoloAutocompleteMultipleFieldValueChangeDetails<TOption> = {
    reason: "selectOption";
    option: TOption;
    value: string;
} | {
    reason: "createOption";
    value: string;
} | {
    reason: "removeOption";
    option: TOption | null;
    value: string;
} | {
    reason: "clear";
    previousValues: string[];
};

Props VireoForm inherits from its default root after excluding component-owned props.

/** Props VireoForm inherits from its default root after excluding component-owned props. */
export type VireoFormInheritedProps = Omit<React.ComponentPropsWithoutRef<"form">, keyof VireoFormOwnProps | "ref"> & {
    sx?: SxProps<Theme>;
};

Standard content-width presets owned by {@link VireoForm }.

/** Standard content-width presets owned by {@link VireoForm}. */
export type VireoFormLayoutWidth = "standard" | "wide" | "full";

Valid keys for VireoFormMultiStep utility classes and theme style overrides.

/** Valid keys for VireoFormMultiStep utility classes and theme style overrides. */
export type VireoFormMultiStepClassKey = keyof VireoFormMultiStepClasses;

Utility classes available to VireoFormMultiStep.

/** Utility classes available to VireoFormMultiStep. */
export type VireoFormMultiStepClasses = Record<VireoFormMultiStepSlotName, string>;

Props VireoFormMultiStep inherits from its default root after excluding component-owned props.

/** Props VireoFormMultiStep inherits from its default root after excluding component-owned props. */
export type VireoFormMultiStepInheritedProps = Omit<BoxProps<"div">, "children" | "component">;
export type VireoFormMultiStepLocaleText = {
    progressLabel: string;
    previousButton: string;
    nextButton: string;
    stepCount: (context: {
        current: number;
        total: number;
    }) => string;
    currentStatus: string;
    completeStatus: string;
    errorStatus: string;
    visitedStatus: string;
    upcomingStatus: string;
    openStepMenu: (context: {
        label: string;
        current: number;
        total: number;
    }) => string;
};

Props owned by {@link VireoFormMultiStep }.

/** Props owned by {@link VireoFormMultiStep}. */
export type VireoFormMultiStepOwnProps = VireoFormMultiStepSlotsAndSlotProps & {
    children?: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormMultiStepClasses>;
    /** Keeps applicable inactive steps mounted with the native hidden attribute. @default false */
    keepMounted?: boolean;
    /** Overrides built-in English progress and navigation copy for this multi-step boundary. */
    localeText?: Partial<VireoFormMultiStepLocaleText>;
};

Props accepted by {@link VireoFormMultiStep }.

/** Props accepted by {@link VireoFormMultiStep}. */
export type VireoFormMultiStepProps = VireoFormMultiStepOwnProps & VireoFormMultiStepInheritedProps;

Replaceable semantic regions exposed by {@link VireoFormMultiStep }.

/** Replaceable semantic regions exposed by {@link VireoFormMultiStep}. */
export type VireoFormMultiStepSlots = {
    [TSlotName in VireoFormMultiStepSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFormMultiStep }.

/** Slot props exposed by {@link VireoFormMultiStep}. */
export type VireoFormMultiStepSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormMultiStepSlots, {
    /** @default 'div' */
    root: SlotProps<"div", VireoFormMultiStepRootSlotPropsOverrides, VireoFormMultiStepOwnerState>;
}>;

Valid keys for VireoFormNextStepButton utility classes and theme style overrides.

/** Valid keys for VireoFormNextStepButton utility classes and theme style overrides. */
export type VireoFormNextStepButtonClassKey = keyof VireoFormNextStepButtonClasses;

Utility classes available to VireoFormNextStepButton.

/** Utility classes available to VireoFormNextStepButton. */
export type VireoFormNextStepButtonClasses = Record<VireoFormNextStepButtonSlotName | VireoFormNextStepButtonStateName, string>;
export type VireoFormNextStepButtonOwnProps = VireoFormNextStepButtonSlotsAndSlotProps & {
    children?: React.ReactNode;
    classes?: Partial<VireoFormNextStepButtonClasses>;
    /** Adds a consumer-owned loading condition to step validation. @default false */
    loading?: boolean | null;
    /** Hides the next action on the final step or leaves it disabled. @default 'auto' */
    visibility?: "auto" | "always";
};
export type VireoFormNextStepButtonOwnerState = {
    disabled: boolean;
    lastStep: boolean;
    loading: boolean;
    visibility: "auto" | "always";
};
export type VireoFormNextStepButtonProps = VireoFormNextStepButtonOwnProps & VireoFormNextStepButtonInheritedProps;
export type VireoFormNextStepButtonSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormNextStepButtonSlots, {
    /** @default Button */
    root: SlotProps<typeof Button, VireoFormNextStepButtonRootSlotPropsOverrides, VireoFormNextStepButtonOwnerState>;
    /** @default CircularProgress */
    loadingIndicator: SlotProps<typeof CircularProgress, VireoFormNextStepButtonLoadingIndicatorSlotPropsOverrides, VireoFormNextStepButtonOwnerState>;
}>;

Valid keys for VireoFormNumberField utility classes and theme style overrides.

/** Valid keys for VireoFormNumberField utility classes and theme style overrides. */
export type VireoFormNumberFieldClassKey = keyof VireoFormNumberFieldClasses;

Utility classes available to VireoFormNumberField.

/** Utility classes available to VireoFormNumberField. */
export type VireoFormNumberFieldClasses = Record<VireoFormNumberFieldSlotName | VireoFormNumberFieldStateName, string>;

Props inherited from MUI TextField after excluding form-owned and Vireo-owned props.

/** Props inherited from MUI TextField after excluding form-owned and Vireo-owned props. */
export type VireoFormNumberFieldInheritedProps = Omit<TextFieldProps, VireoFormNumberFieldComponentOwnedProp>;

Props owned by the bound form number field. The field name and value remain owned by `form.Field`.

/** Props owned by the bound form number field. The field name and value remain owned by `form.Field`. */
export type VireoFormNumberFieldOwnProps = VireoFormNumberFieldSlotsAndSlotProps & {
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormNumberFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Ref forwarded to the native input. */
    inputRef?: React.Ref<HTMLInputElement>;
    /** Largest value emitted to the bound field. */
    max?: number;
    /** Smallest value emitted to the bound field. */
    min?: number;
    onBlur?: NonNullable<TextFieldProps["onBlur"]>;
    onChange?: NonNullable<TextFieldProps["onChange"]>;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: number) => React.ReactNode;
    required?: boolean;
};
export type VireoFormNumberFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    invalid: boolean;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.NumberField`.

/** Props accepted by `field.NumberField`. */
export type VireoFormNumberFieldProps = VireoFormNumberFieldOwnProps & VireoFormNumberFieldInheritedProps;

Replaceable semantic regions exposed by the bound form number field.

/** Replaceable semantic regions exposed by the bound form number field. */
export type VireoFormNumberFieldSlots = {
    root: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound form number field.

/** Slot props exposed by the bound form number field. */
export type VireoFormNumberFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormNumberFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormNumberFieldRootSlotPropsOverrides, VireoFormNumberFieldOwnerState>;
    /** @default InputLabel */
    inputLabel: SlotProps<typeof InputLabel, VireoFormNumberFieldInputLabelSlotPropsOverrides, VireoFormNumberFieldOwnerState>;
    /** @default OutlinedInput; follows `variant` for standard and filled fields. */
    input: SlotProps<typeof OutlinedInput, VireoFormNumberFieldInputSlotPropsOverrides, VireoFormNumberFieldOwnerState>;
    /** @default 'input' */
    htmlInput: SlotProps<"input", VireoFormNumberFieldHtmlInputSlotPropsOverrides, VireoFormNumberFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormNumberFieldFormHelperTextSlotPropsOverrides, VireoFormNumberFieldOwnerState>;
}>;

Props owned by {@link VireoForm }.

/** Props owned by {@link VireoForm}. */
export type VireoFormOwnProps = VireoFormSlotsAndSlotProps & {
    children?: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormClasses>;
    /** Controls when bound fields present validation errors. @default 'touched-or-submitted' */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides Vireo's default validation-error formatter for bound fields. */
    formatError?: VireoFormErrorFormatter;
    /** Focuses the first focusable invalid field after a rejected submit. @default true */
    focusInvalidFieldOnSubmit?: boolean;
    /** Constrains and centers the form using Vireo's standard content-width presets. @default 'standard' */
    layoutWidth?: VireoFormLayoutWidth;
    /** Presents every bound field as a non-editable display value and suppresses form submission. @default false */
    readOnly?: boolean;
    /** Fallback shown by read-only fields with no meaningful value. @default 'Not provided' */
    readOnlyEmptyValue?: React.ReactNode;
    /** Registers this form with the unsaved-changes capability while it is dirty. @default false */
    unsavedChangesGuard?: boolean;
    /** Adds non-form busy work to the unsaved-changes registration. @default false */
    unsavedChangesBusy?: boolean;
    /** Overrides the nearest unsaved-changes scope for this form. */
    unsavedChangesScopeId?: string;
};
export type VireoFormOwnerState = {
    dirty: boolean;
    invalid: boolean;
    layoutWidth: VireoFormLayoutWidth;
    readOnly: boolean;
    submitting: boolean;
    validating: boolean;
};

Valid keys for VireoFormPreviousStepButton utility classes and theme style overrides.

/** Valid keys for VireoFormPreviousStepButton utility classes and theme style overrides. */
export type VireoFormPreviousStepButtonClassKey = keyof VireoFormPreviousStepButtonClasses;

Utility classes available to VireoFormPreviousStepButton.

/** Utility classes available to VireoFormPreviousStepButton. */
export type VireoFormPreviousStepButtonClasses = Record<VireoFormPreviousStepButtonSlotName | VireoFormPreviousStepButtonStateName, string>;
export type VireoFormPreviousStepButtonOwnProps = VireoFormPreviousStepButtonSlotsAndSlotProps & {
    children?: React.ReactNode;
    classes?: Partial<VireoFormPreviousStepButtonClasses>;
    /** Hides the action on the first step or leaves it disabled. @default 'auto' */
    visibility?: "auto" | "always";
};
export type VireoFormPreviousStepButtonProps = VireoFormPreviousStepButtonOwnProps & VireoFormPreviousStepButtonInheritedProps;
export type VireoFormPreviousStepButtonSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormPreviousStepButtonSlots, {
    /** @default Button */
    root: SlotProps<typeof Button, VireoFormPreviousStepButtonRootSlotPropsOverrides, VireoFormPreviousStepButtonOwnerState>;
}>;

Props accepted by {@link VireoForm }.

/** Props accepted by {@link VireoForm}. */
export type VireoFormProps = VireoFormOwnProps & VireoFormInheritedProps;

Accessible naming contract for the radio group itself.

/** Accessible naming contract for the radio group itself. */
export type VireoFormRadioGroupFieldAccessibleNameProps = {
    "aria-label": string;
    "aria-labelledby"?: string;
} | {
    "aria-label"?: undefined;
    "aria-labelledby": string;
};

Valid keys for VireoFormRadioGroupField utility classes and theme style overrides.

/** Valid keys for VireoFormRadioGroupField utility classes and theme style overrides. */
export type VireoFormRadioGroupFieldClassKey = keyof VireoFormRadioGroupFieldClasses;

Utility classes available to VireoFormRadioGroupField.

/** Utility classes available to VireoFormRadioGroupField. */
export type VireoFormRadioGroupFieldClasses = Record<VireoFormRadioGroupFieldSlotName | VireoFormRadioGroupFieldStateClassKey, string>;

Props VireoFormRadioGroupField inherits from its default root after excluding component-owned props.

/** Props VireoFormRadioGroupField inherits from its default root after excluding component-owned props. */
export type VireoFormRadioGroupFieldInheritedProps = Omit<FormControlProps, VireoFormRadioGroupFieldComponentOwnedProp>;

Props owned by the bound form radio-group field. The field name and value remain owned by `form.Field`.

/** Props owned by the bound form radio-group field. The field name and value remain owned by `form.Field`. */
export type VireoFormRadioGroupFieldOwnProps<TOption, TValue extends VireoFormRadioGroupFieldValue> = VireoFormRadioGroupFieldSlotsAndSlotProps & {
    /** Options rendered by the group. */
    options: readonly TOption[];
    /** Returns the stable unique scalar value stored by the form for one option. */
    getOptionValue: (option: TOption) => TValue;
    /** Renders the visible label for one option. */
    renderOption: (option: TOption) => React.ReactNode;
    /** Returns whether one option is unavailable. */
    getOptionDisabled?: (option: TOption) => boolean;
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormRadioGroupFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Places option controls horizontally. @default false */
    row?: boolean;
    /** @default 'end' */
    labelPlacement?: FormControlLabelProps["labelPlacement"];
    onBlur?: NonNullable<RadioGroupProps["onBlur"]>;
    onChange?: NonNullable<RadioGroupProps["onChange"]>;
    /** Observes accepted option changes after cancelable handlers. */
    onValueChange?: (value: TValue) => void;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: TValue, option: TOption | undefined) => React.ReactNode;
    required?: boolean;
    "aria-describedby"?: string;
};
export type VireoFormRadioGroupFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    hasValue: boolean;
    invalid: boolean;
    readOnly: boolean;
    row: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.RadioGroupField`.

/** Props accepted by `field.RadioGroupField`. */
export type VireoFormRadioGroupFieldProps<TOption = unknown, TValue extends VireoFormRadioGroupFieldValue = VireoFormRadioGroupFieldValue> = VireoFormRadioGroupFieldOwnProps<TOption, TValue> & VireoFormRadioGroupFieldAccessibleNameProps & VireoFormRadioGroupFieldInheritedProps;

Replaceable semantic regions exposed by the bound form radio-group field.

/** Replaceable semantic regions exposed by the bound form radio-group field. */
export type VireoFormRadioGroupFieldSlots = {
    root: React.ElementType;
    radioGroup: React.ElementType;
    formControlLabel: React.ElementType;
    radio: React.ElementType;
    optionLabel: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound form radio-group field.

/** Slot props exposed by the bound form radio-group field. */
export type VireoFormRadioGroupFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormRadioGroupFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormRadioGroupFieldRootSlotPropsOverrides, VireoFormRadioGroupFieldOwnerState>;
    /** @default RadioGroup */
    radioGroup: SlotProps<typeof RadioGroup, VireoFormRadioGroupFieldRadioGroupSlotPropsOverrides, VireoFormRadioGroupFieldOwnerState>;
    /** @default FormControlLabel */
    formControlLabel: SlotProps<typeof FormControlLabel, VireoFormRadioGroupFieldFormControlLabelSlotPropsOverrides, VireoFormRadioGroupFieldOwnerState>;
    /** @default Radio */
    radio: SlotProps<typeof Radio, VireoFormRadioGroupFieldRadioSlotPropsOverrides, VireoFormRadioGroupFieldOwnerState>;
    /** @default Typography */
    optionLabel: SlotProps<typeof Typography, VireoFormRadioGroupFieldOptionLabelSlotPropsOverrides, VireoFormRadioGroupFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormRadioGroupFieldFormHelperTextSlotPropsOverrides, VireoFormRadioGroupFieldOwnerState>;
}>;

Scalar values supported by `field.RadioGroupField`. Objects remain represented by their stable option value.

/** Scalar values supported by `field.RadioGroupField`. Objects remain represented by their stable option value. */
export type VireoFormRadioGroupFieldValue = string | number;

Presents a bound form value as text without editable control chrome.

/**
 * Presents a bound form value as text without editable control chrome.
 */
export declare const VireoFormReadOnlyValue: React.ForwardRefExoticComponent<Omit<VireoFormReadOnlyValueProps, "ref"> & React.RefAttributes<HTMLDivElement>>;

Valid keys for VireoFormReadOnlyValue utility classes and theme style overrides.

/** Valid keys for VireoFormReadOnlyValue utility classes and theme style overrides. */
export type VireoFormReadOnlyValueClassKey = keyof VireoFormReadOnlyValueClasses;

Utility classes available to VireoFormReadOnlyValue.

/** Utility classes available to VireoFormReadOnlyValue. */
export type VireoFormReadOnlyValueClasses = Record<VireoFormReadOnlyValueSlotName | "empty" | "hasLabel", string>;

Props VireoFormReadOnlyValue inherits from its default root after excluding component-owned props.

/** Props VireoFormReadOnlyValue inherits from its default root after excluding component-owned props. */
export type VireoFormReadOnlyValueInheritedProps = Omit<BoxProps<"div">, "children" | "component">;

Props owned by {@link VireoFormReadOnlyValue }.

/** Props owned by {@link VireoFormReadOnlyValue}. */
export type VireoFormReadOnlyValueOwnProps = VireoFormReadOnlyValueSlotsAndSlotProps & {
    /** Value content rendered without editable control chrome. */
    children?: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormReadOnlyValueClasses>;
    /** Whether the bound field has no meaningful value. @default false */
    empty?: boolean;
    /** Content rendered when `empty` is true. @default 'Not provided' */
    emptyValue?: React.ReactNode;
    /** Optional visible field label. Required indicators are intentionally omitted in read-only presentation. */
    label?: React.ReactNode;
};

Props accepted by {@link VireoFormReadOnlyValue }.

/** Props accepted by {@link VireoFormReadOnlyValue}. */
export type VireoFormReadOnlyValueProps = VireoFormReadOnlyValueOwnProps & VireoFormReadOnlyValueInheritedProps;

Replaceable semantic regions exposed by {@link VireoFormReadOnlyValue }.

/** Replaceable semantic regions exposed by {@link VireoFormReadOnlyValue}. */
export type VireoFormReadOnlyValueSlots = {
    [TSlotName in VireoFormReadOnlyValueSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFormReadOnlyValue }.

/** Slot props exposed by {@link VireoFormReadOnlyValue}. */
export type VireoFormReadOnlyValueSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormReadOnlyValueSlots, {
    /** @default 'div' */
    root: SlotProps<"div", VireoFormReadOnlyValueRootSlotPropsOverrides, VireoFormReadOnlyValueOwnerState>;
    /** @default Typography */
    label: SlotProps<typeof Typography, VireoFormReadOnlyValueLabelSlotPropsOverrides, VireoFormReadOnlyValueOwnerState>;
    /** @default Typography */
    value: SlotProps<typeof Typography, VireoFormReadOnlyValueValueSlotPropsOverrides, VireoFormReadOnlyValueOwnerState>;
}>;

Groups related form content under an accessible heading and a container-responsive layout.

/** Groups related form content under an accessible heading and a container-responsive layout. */
export declare const VireoFormSection: React.ForwardRefExoticComponent<import("./VireoFormSection.types.js").VireoFormSectionSlotsAndSlotProps & {
    children: React.ReactNode;
    classes?: Partial<import("./VireoFormSection.classes.js").VireoFormSectionClasses>;
    description?: React.ReactNode;
    headingLevel?: import("./VireoFormSection.types.js").VireoFormSectionHeadingLevel;
    layout?: import("./VireoFormSection.types.js").VireoFormSectionLayout;
    label: React.ReactNode;
    maxColumns?: import("./VireoFormSection.types.js").VireoFormSectionMaxColumns;
    variant?: import("./VireoFormSection.types.js").VireoFormSectionVariant;
} & import("./VireoFormSection.types.js").VireoFormSectionInheritedProps & React.RefAttributes<HTMLElement>>;

Valid keys for VireoFormSection utility classes and theme style overrides.

/** Valid keys for VireoFormSection utility classes and theme style overrides. */
export type VireoFormSectionClassKey = keyof VireoFormSectionClasses;

Utility classes available to VireoFormSection.

/** Utility classes available to VireoFormSection. */
export type VireoFormSectionClasses = Record<VireoFormSectionSlotName, string>;

Groups one or more elements into a single responsive form-section cell with optional full-row spanning.

/**
 * Groups one or more elements into a single responsive form-section cell with optional full-row spanning.
 */
export declare const VireoFormSectionItem: React.ForwardRefExoticComponent<Omit<VireoFormSectionItemProps, "ref"> & React.RefAttributes<HTMLDivElement>>;

Valid keys for VireoFormSectionItem utility classes and theme style overrides.

/** Valid keys for VireoFormSectionItem utility classes and theme style overrides. */
export type VireoFormSectionItemClassKey = keyof VireoFormSectionItemClasses;

Utility classes available to VireoFormSectionItem.

/** Utility classes available to VireoFormSectionItem. */
export type VireoFormSectionItemClasses = Record<VireoFormSectionItemSlotName, string>;

Props VireoFormSectionItem inherits from its default root after excluding component-owned props.

/** Props VireoFormSectionItem inherits from its default root after excluding component-owned props. */
export type VireoFormSectionItemInheritedProps = Omit<BoxProps<"div">, "children" | "component">;

Props owned by {@link VireoFormSectionItem }.

/** Props owned by {@link VireoFormSectionItem}. */
export type VireoFormSectionItemOwnProps = VireoFormSectionItemSlotsAndSlotProps & {
    children: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormSectionItemClasses>;
    /** Controls whether the item occupies one cell or the complete responsive row. @default 'auto' */
    span?: VireoFormSectionItemSpan;
};

Props accepted by {@link VireoFormSectionItem }.

/** Props accepted by {@link VireoFormSectionItem}. */
export type VireoFormSectionItemProps = VireoFormSectionItemOwnProps & VireoFormSectionItemInheritedProps;

Replaceable semantic regions exposed by {@link VireoFormSectionItem }.

/** Replaceable semantic regions exposed by {@link VireoFormSectionItem}. */
export type VireoFormSectionItemSlots = {
    [TSlotName in VireoFormSectionItemSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFormSectionItem }.

/** Slot props exposed by {@link VireoFormSectionItem}. */
export type VireoFormSectionItemSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSectionItemSlots, {
    /** @default 'div' */
    root: SlotProps<"div", VireoFormSectionItemRootSlotPropsOverrides, VireoFormSectionItemOwnerState>;
}>;
export type VireoFormSectionOwnProps = VireoFormSectionSlotsAndSlotProps & {
    children: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormSectionClasses>;
    /** Supporting text associated with the named section. */
    description?: React.ReactNode;
    /** Semantic heading level used for the section label. @default 2 */
    headingLevel?: VireoFormSectionHeadingLevel;
    /** Controls whether fields use a responsive grid or an always-stacked layout. @default 'grid' */
    layout?: VireoFormSectionLayout;
    /** Accessible section heading. */
    label: React.ReactNode;
    /** Maximum number of responsive grid columns. @default 2 */
    maxColumns?: VireoFormSectionMaxColumns;
    /** Controls the section's visual separation from surrounding form content. @default 'divided' */
    variant?: VireoFormSectionVariant;
};
export type VireoFormSectionOwnerState = {
    hasDescription: boolean;
    headingLevel: VireoFormSectionHeadingLevel;
    layout: VireoFormSectionLayout;
    maxColumns: VireoFormSectionMaxColumns;
    variant: VireoFormSectionVariant;
};
export type VireoFormSectionProps = VireoFormSectionOwnProps & VireoFormSectionInheritedProps;
export type VireoFormSectionSlots = {
    [T in VireoFormSectionSlotName]: React.ElementType;
};
export type VireoFormSectionSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSectionSlots, {
    /** @default 'section' */
    root: SlotProps<typeof Box, VireoFormSectionRootSlotPropsOverrides, VireoFormSectionOwnerState>;
    /** @default Box */
    header: SlotProps<typeof Box, VireoFormSectionHeaderSlotPropsOverrides, VireoFormSectionOwnerState>;
    /** @default Typography */
    label: SlotProps<typeof Typography, VireoFormSectionLabelSlotPropsOverrides, VireoFormSectionOwnerState>;
    /** @default Typography */
    description: SlotProps<typeof Typography, VireoFormSectionDescriptionSlotPropsOverrides, VireoFormSectionOwnerState>;
    /** @default Box */
    content: SlotProps<typeof Box, VireoFormSectionContentSlotPropsOverrides, VireoFormSectionOwnerState>;
    /** @default Box */
    layout: SlotProps<typeof Box, VireoFormSectionLayoutSlotPropsOverrides, VireoFormSectionOwnerState>;
}>;

Valid keys for VireoFormSelectField utility classes and theme style overrides.

/** Valid keys for VireoFormSelectField utility classes and theme style overrides. */
export type VireoFormSelectFieldClassKey = keyof VireoFormSelectFieldClasses;

Utility classes available to VireoFormSelectField.

/** Utility classes available to VireoFormSelectField. */
export type VireoFormSelectFieldClasses = Record<VireoFormSelectFieldSlotName | VireoFormSelectFieldStateName, string>;

Props inherited from MUI TextField after excluding form-owned and Vireo-owned props.

/** Props inherited from MUI TextField after excluding form-owned and Vireo-owned props. */
export type VireoFormSelectFieldInheritedProps = Omit<TextFieldProps, VireoFormSelectFieldComponentOwnedProp>;

Props owned by the bound form select field. The field name and value remain owned by `form.Field`.

/** Props owned by the bound form select field. The field name and value remain owned by `form.Field`. */
export type VireoFormSelectFieldOwnProps<TOption, TValue extends VireoFormSelectFieldValue> = VireoFormSelectFieldSlotsAndSlotProps & {
    /** Accessible label used by the visible select control. */
    label: React.ReactNode;
    /** Options rendered by the field. */
    options: readonly TOption[];
    /** Returns the stable non-empty scalar value stored by the form for one option. */
    getOptionValue: (option: TOption) => TValue;
    /** Renders one option and the selected-value presentation. */
    renderOption: (option: TOption) => React.ReactNode;
    /** Returns whether one option is unavailable. */
    getOptionDisabled?: (option: TOption) => boolean;
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormSelectFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Text rendered when the bound value is `null`. */
    placeholder?: React.ReactNode;
    /** Prevents the selected value from being cleared. @default false */
    disableClearable?: boolean;
    /** Accessible label for the clear action. @default 'Clear selection' */
    clearLabel?: string;
    /** Replaces the default clear icon without replacing the button slot. */
    clearIcon?: React.ReactNode;
    /** Ref forwarded to MUI's select input. */
    inputRef?: SelectProps<TValue>["inputRef"];
    onBlur?: NonNullable<SelectProps<TValue>["onBlur"]>;
    /** Observes accepted option and clear changes after cancelable slot handlers. */
    onValueChange?: (value: TValue | null) => void;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: TValue, option: TOption | undefined) => React.ReactNode;
    required?: boolean;
};
export type VireoFormSelectFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    hasValue: boolean;
    invalid: boolean;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.SelectField`.

/** Props accepted by `field.SelectField`. */
export type VireoFormSelectFieldProps<TOption = unknown, TValue extends VireoFormSelectFieldValue = VireoFormSelectFieldValue> = VireoFormSelectFieldOwnProps<TOption, TValue> & VireoFormSelectFieldInheritedProps;

Replaceable semantic regions exposed by the bound form select field.

/** Replaceable semantic regions exposed by the bound form select field. */
export type VireoFormSelectFieldSlots = {
    root: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    select: React.ElementType;
    option: React.ElementType;
    optionText: React.ElementType;
    clearButton: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound form select field.

/** Slot props exposed by the bound form select field. */
export type VireoFormSelectFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSelectFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormSelectFieldRootSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default InputLabel */
    inputLabel: SlotProps<typeof InputLabel, VireoFormSelectFieldInputLabelSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default OutlinedInput; follows `variant` for standard and filled fields. */
    input: SlotProps<typeof OutlinedInput, VireoFormSelectFieldInputSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default 'input' */
    htmlInput: SlotProps<"input", VireoFormSelectFieldHtmlInputSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default Select */
    select: SlotProps<typeof Select, VireoFormSelectFieldSelectSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default MenuItem */
    option: SlotProps<typeof MenuItem, VireoFormSelectFieldOptionSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default ListItemText */
    optionText: SlotProps<typeof ListItemText, VireoFormSelectFieldOptionTextSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default IconButton */
    clearButton: SlotProps<typeof IconButton, VireoFormSelectFieldClearButtonSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormSelectFieldFormHelperTextSlotPropsOverrides, VireoFormSelectFieldOwnerState>;
}>;

Scalar values supported by `field.SelectField`. Objects remain represented by their stable option value.

/** Scalar values supported by `field.SelectField`. Objects remain represented by their stable option value. */
export type VireoFormSelectFieldValue = string | number;

Valid keys for VireoFormSelectMultipleField utility classes and theme style overrides.

/** Valid keys for VireoFormSelectMultipleField utility classes and theme style overrides. */
export type VireoFormSelectMultipleFieldClassKey = keyof VireoFormSelectMultipleFieldClasses;

Utility classes available to VireoFormSelectMultipleField.

/** Utility classes available to VireoFormSelectMultipleField. */
export type VireoFormSelectMultipleFieldClasses = Record<VireoFormSelectMultipleFieldSlotName | VireoFormSelectMultipleFieldStateName, string>;

Props inherited from MUI TextField after excluding form-owned and Vireo-owned props.

/** Props inherited from MUI TextField after excluding form-owned and Vireo-owned props. */
export type VireoFormSelectMultipleFieldInheritedProps = Omit<TextFieldProps, VireoFormSelectMultipleFieldComponentOwnedProp>;

Props owned by the bound form multiple-select field. The field name and array value remain owned by `form.Field`.

/** Props owned by the bound form multiple-select field. The field name and array value remain owned by `form.Field`. */
export type VireoFormSelectMultipleFieldOwnProps<TOption, TValue extends VireoFormSelectMultipleFieldValue> = VireoFormSelectMultipleFieldSlotsAndSlotProps & {
    /** Accessible label used by the visible select control. */
    label: React.ReactNode;
    /** Options rendered by the field. */
    options: readonly TOption[];
    /** Returns the stable non-empty scalar value stored for one option. */
    getOptionValue: (option: TOption) => TValue;
    /** Renders one dropdown option and the default selected-value summary item. */
    renderOption: (option: TOption) => React.ReactNode;
    /** Replaces the complete selected-value presentation. */
    renderSelectedOptions?: (params: VireoFormSelectMultipleFieldRenderSelectedOptionsParams<TOption>) => React.ReactNode;
    /** Maximum option labels shown by the compact default summary. @default 2 */
    maxDisplayedOptions?: number;
    /** Returns whether one option is unavailable. */
    getOptionDisabled?: (option: TOption) => boolean;
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormSelectMultipleFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Text rendered when the bound value is empty. */
    placeholder?: React.ReactNode;
    /** Prevents all selected values from being cleared at once. @default false */
    disableClearable?: boolean;
    /** Accessible label for the clear-all action. @default 'Clear selections' */
    clearLabel?: string;
    /** Replaces the default clear icon without replacing the button slot. */
    clearIcon?: React.ReactNode;
    /** Ref forwarded to MUI's select input. */
    inputRef?: SelectProps<TValue[]>["inputRef"];
    onBlur?: NonNullable<SelectProps<TValue[]>["onBlur"]>;
    /** Observes accepted selection and clear-all changes after cancelable slot handlers. */
    onValueChange?: (value: TValue[]) => void;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (values: readonly TValue[], selectedOptions: readonly TOption[]) => React.ReactNode;
    required?: boolean;
};
export type VireoFormSelectMultipleFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    hasValue: boolean;
    invalid: boolean;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.SelectMultipleField`.

/** Props accepted by `field.SelectMultipleField`. */
export type VireoFormSelectMultipleFieldProps<TOption = unknown, TValue extends VireoFormSelectMultipleFieldValue = VireoFormSelectMultipleFieldValue> = VireoFormSelectMultipleFieldOwnProps<TOption, TValue> & VireoFormSelectMultipleFieldInheritedProps;
export type VireoFormSelectMultipleFieldRenderSelectedOptionsParams<TOption> = {
    /** Every recognized selected option, in the bound value array's order. */
    selectedOptions: readonly TOption[];
    /** The leading options included by `maxDisplayedOptions`. */
    displayedOptions: readonly TOption[];
    /** Number of recognized selected options omitted from `displayedOptions`. */
    hiddenCount: number;
    /** Resolved non-negative compact-summary limit. */
    maxDisplayedOptions: number;
};

Replaceable semantic regions exposed by the bound form multiple-select field.

/** Replaceable semantic regions exposed by the bound form multiple-select field. */
export type VireoFormSelectMultipleFieldSlots = {
    root: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    select: React.ElementType;
    selectionSummary: React.ElementType;
    option: React.ElementType;
    optionCheckbox: React.ElementType;
    optionText: React.ElementType;
    clearButton: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound form multiple-select field.

/** Slot props exposed by the bound form multiple-select field. */
export type VireoFormSelectMultipleFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSelectMultipleFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormSelectMultipleFieldRootSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default InputLabel */
    inputLabel: SlotProps<typeof InputLabel, VireoFormSelectMultipleFieldInputLabelSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default OutlinedInput; follows `variant` for standard and filled fields. */
    input: SlotProps<typeof OutlinedInput, VireoFormSelectMultipleFieldInputSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default 'input' */
    htmlInput: SlotProps<"input", VireoFormSelectMultipleFieldHtmlInputSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default Select */
    select: SlotProps<typeof Select, VireoFormSelectMultipleFieldSelectSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default Typography */
    selectionSummary: SlotProps<typeof Typography, VireoFormSelectMultipleFieldSelectionSummarySlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default MenuItem */
    option: SlotProps<typeof MenuItem, VireoFormSelectMultipleFieldOptionSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default Checkbox */
    optionCheckbox: SlotProps<typeof Checkbox, VireoFormSelectMultipleFieldOptionCheckboxSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default ListItemText */
    optionText: SlotProps<typeof ListItemText, VireoFormSelectMultipleFieldOptionTextSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default IconButton */
    clearButton: SlotProps<typeof IconButton, VireoFormSelectMultipleFieldClearButtonSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormSelectMultipleFieldFormHelperTextSlotPropsOverrides, VireoFormSelectMultipleFieldOwnerState>;
}>;

Scalar option identifiers stored in arrays by `field.SelectMultipleField`.

/** Scalar option identifiers stored in arrays by `field.SelectMultipleField`. */
export type VireoFormSelectMultipleFieldValue = string | number;

Replaceable semantic regions exposed by {@link VireoForm }.

/** Replaceable semantic regions exposed by {@link VireoForm}. */
export type VireoFormSlots = {
    [TSlotName in VireoFormSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoForm }.

/** Slot props exposed by {@link VireoForm}. */
export type VireoFormSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSlots, {
    /** @default 'form' */
    root: SlotProps<"form", VireoFormRootSlotPropsOverrides, VireoFormOwnerState>;
}>;

Valid keys for VireoFormStep utility classes and theme style overrides.

/** Valid keys for VireoFormStep utility classes and theme style overrides. */
export type VireoFormStepClassKey = keyof VireoFormStepClasses;

Utility classes available to VireoFormStep.

/** Utility classes available to VireoFormStep. */
export type VireoFormStepClasses = Record<VireoFormStepSlotName, string>;

Props VireoFormStep inherits from its default root after excluding component-owned props.

/** Props VireoFormStep inherits from its default root after excluding component-owned props. */
export type VireoFormStepInheritedProps = Omit<BoxProps<"section">, "children" | "component" | "id">;

Props owned by {@link VireoFormStep }.

/** Props owned by {@link VireoFormStep}. */
export type VireoFormStepOwnProps = VireoFormStepSlotsAndSlotProps & {
    children?: React.ReactNode;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormStepClasses>;
    /** Stable configured step id. */
    id: string;
};
export type VireoFormStepOwnerState = {
    active: boolean;
    current: boolean;
    direction: VireoMultiStepDirection;
    keepMounted: boolean;
};

Valid keys for VireoFormStepProgress utility classes and theme style overrides.

/** Valid keys for VireoFormStepProgress utility classes and theme style overrides. */
export type VireoFormStepProgressClassKey = keyof VireoFormStepProgressClasses;

Utility classes available to VireoFormStepProgress.

/** Utility classes available to VireoFormStepProgress. */
export type VireoFormStepProgressClasses = Record<VireoFormStepProgressSlotName, string>;
export type VireoFormStepProgressOwnProps = VireoFormStepProgressSlotsAndSlotProps & {
    /** Container width at which responsive progress changes to its compact presentation. @default 600 */
    compactBreakpoint?: number;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormStepProgressClasses>;
    /** Chooses the wide, compact, or container-responsive presentation. @default 'responsive' */
    layout?: VireoFormStepProgressLayout;
    /** Controls which steps can be selected directly from progress navigation. @default 'visited' */
    navigation?: VireoFormStepProgressNavigation;
};
export type VireoFormStepProgressOwnerState = {
    compactBreakpoint: number;
    layout: VireoFormStepProgressLayout;
    navigation: VireoFormStepProgressNavigation;
    step?: VireoMultiStepStepState<string>;
};
export type VireoFormStepProgressProps = VireoFormStepProgressOwnProps & VireoFormStepProgressInheritedProps;
export type VireoFormStepProgressSlots = {
    [T in VireoFormStepProgressSlotName]: React.ElementType;
};
export type VireoFormStepProgressSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormStepProgressSlots, {
    /** @default 'nav' */
    root: SlotProps<typeof Box, VireoFormStepProgressRootSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'ol' */
    list: SlotProps<typeof Box, VireoFormStepProgressListSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'li' */
    step: SlotProps<typeof Box, VireoFormStepProgressStepSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default ButtonBase */
    stepButton: SlotProps<typeof ButtonBase, VireoFormStepProgressStepButtonSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'span' */
    statusIcon: SlotProps<typeof Box, VireoFormStepProgressStatusIconSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'span' */
    stepLabel: SlotProps<typeof Typography, VireoFormStepProgressStepLabelSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'span' */
    connector: SlotProps<typeof Box, VireoFormStepProgressConnectorSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default Box */
    compactRoot: SlotProps<typeof Box, VireoFormStepProgressCompactRootSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default ButtonBase */
    compactTrigger: SlotProps<typeof ButtonBase, VireoFormStepProgressCompactTriggerSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'span' */
    compactLabel: SlotProps<typeof Typography, VireoFormStepProgressCompactLabelSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default 'span' */
    compactCount: SlotProps<typeof Typography, VireoFormStepProgressCompactCountSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default LinearProgress */
    compactProgress: SlotProps<typeof LinearProgress, VireoFormStepProgressCompactProgressSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default Menu */
    menu: SlotProps<typeof Menu, VireoFormStepProgressMenuSlotPropsOverrides, VireoFormStepProgressOwnerState>;
    /** @default MenuItem */
    menuItem: SlotProps<typeof MenuItem, VireoFormStepProgressMenuItemSlotPropsOverrides, VireoFormStepProgressOwnerState>;
}>;

Props accepted by {@link VireoFormStep }.

/** Props accepted by {@link VireoFormStep}. */
export type VireoFormStepProps = VireoFormStepOwnProps & VireoFormStepInheritedProps;

Replaceable semantic regions exposed by {@link VireoFormStep }.

/** Replaceable semantic regions exposed by {@link VireoFormStep}. */
export type VireoFormStepSlots = {
    [TSlotName in VireoFormStepSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFormStep }.

/** Slot props exposed by {@link VireoFormStep}. */
export type VireoFormStepSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormStepSlots, {
    /** @default 'section' */
    root: SlotProps<"section", VireoFormStepRootSlotPropsOverrides, VireoFormStepOwnerState>;
    /** @default Typography */
    label: SlotProps<typeof Typography, VireoFormStepLabelSlotPropsOverrides, VireoFormStepOwnerState>;
}>;

Valid keys for VireoFormSubmitButton utility classes and theme style overrides.

/** Valid keys for VireoFormSubmitButton utility classes and theme style overrides. */
export type VireoFormSubmitButtonClassKey = keyof VireoFormSubmitButtonClasses;

Utility classes available to VireoFormSubmitButton.

/** Utility classes available to VireoFormSubmitButton. */
export type VireoFormSubmitButtonClasses = Record<VireoFormSubmitButtonSlotName | VireoFormSubmitButtonStateName, string>;

Props VireoFormSubmitButton inherits from its default root after excluding component-owned props.

/** Props VireoFormSubmitButton inherits from its default root after excluding component-owned props. */
export type VireoFormSubmitButtonInheritedProps = Omit<ButtonProps, "component" | "href" | "loading" | "type">;

Props owned by {@link VireoFormSubmitButton }.

/** Props owned by {@link VireoFormSubmitButton}. */
export type VireoFormSubmitButtonOwnProps = VireoFormSubmitButtonSlotsAndSlotProps & {
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoFormSubmitButtonClasses>;
    /** Adds a consumer-owned loading condition to the form's submission state. @default false */
    loading?: boolean | null;
    /** Controls whether a multi-step submit action is rendered only on the final step. @default 'auto' */
    visibility?: "auto" | "always";
};
export type VireoFormSubmitButtonOwnerState = {
    available: boolean;
    disabled: boolean;
    loading: boolean;
    submitting: boolean;
};

Props accepted by {@link VireoFormSubmitButton }.

/** Props accepted by {@link VireoFormSubmitButton}. */
export type VireoFormSubmitButtonProps = VireoFormSubmitButtonOwnProps & VireoFormSubmitButtonInheritedProps;

Replaceable semantic regions exposed by {@link VireoFormSubmitButton }.

/** Replaceable semantic regions exposed by {@link VireoFormSubmitButton}. */
export type VireoFormSubmitButtonSlots = {
    [TSlotName in VireoFormSubmitButtonSlotName]: React.ElementType;
};

Slot props exposed by {@link VireoFormSubmitButton }.

/** Slot props exposed by {@link VireoFormSubmitButton}. */
export type VireoFormSubmitButtonSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSubmitButtonSlots, {
    /** @default Button */
    root: SlotProps<typeof Button, VireoFormSubmitButtonRootSlotPropsOverrides, VireoFormSubmitButtonOwnerState>;
}>;

Valid keys for VireoFormSwitchField utility classes and theme style overrides.

/** Valid keys for VireoFormSwitchField utility classes and theme style overrides. */
export type VireoFormSwitchFieldClassKey = keyof VireoFormSwitchFieldClasses;

Utility classes available to VireoFormSwitchField.

/** Utility classes available to VireoFormSwitchField. */
export type VireoFormSwitchFieldClasses = Record<VireoFormSwitchFieldSlotName | VireoFormSwitchFieldStateName, string>;

Props VireoFormSwitchField inherits from its default root after excluding component-owned props.

/** Props VireoFormSwitchField inherits from its default root after excluding component-owned props. */
export type VireoFormSwitchFieldInheritedProps = Omit<FormControlProps, VireoFormSwitchFieldComponentOwnedProp>;

Props owned by the bound form switch field. The field name and checked value remain owned by `form.Field`.

/** Props owned by the bound form switch field. The field name and checked value remain owned by `form.Field`. */
export type VireoFormSwitchFieldOwnProps = VireoFormSwitchFieldSlotsAndSlotProps & {
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormSwitchFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Ref forwarded to the native checkbox input. */
    inputRef?: React.Ref<HTMLInputElement>;
    /** Visible accessible label rendered beside the switch. */
    label: React.ReactNode;
    /** @default 'end' */
    labelPlacement?: FormControlLabelProps["labelPlacement"];
    onBlur?: NonNullable<SwitchProps["onBlur"]>;
    onChange?: NonNullable<SwitchProps["onChange"]>;
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: boolean) => React.ReactNode;
    required?: boolean;
};
export type VireoFormSwitchFieldOwnerState = {
    checked: boolean;
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    invalid: boolean;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.SwitchField`.

/** Props accepted by `field.SwitchField`. */
export type VireoFormSwitchFieldProps = VireoFormSwitchFieldOwnProps & VireoFormSwitchFieldInheritedProps;

Replaceable semantic regions exposed by the bound form switch field.

/** Replaceable semantic regions exposed by the bound form switch field. */
export type VireoFormSwitchFieldSlots = {
    root: React.ElementType;
    formControlLabel: React.ElementType;
    switch: React.ElementType;
    label: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound form switch field.

/** Slot props exposed by the bound form switch field. */
export type VireoFormSwitchFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormSwitchFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormSwitchFieldRootSlotPropsOverrides, VireoFormSwitchFieldOwnerState>;
    /** @default FormControlLabel */
    formControlLabel: SlotProps<typeof FormControlLabel, VireoFormSwitchFieldFormControlLabelSlotPropsOverrides, VireoFormSwitchFieldOwnerState>;
    /** @default Switch */
    switch: SlotProps<typeof Switch, VireoFormSwitchFieldSwitchSlotPropsOverrides, VireoFormSwitchFieldOwnerState>;
    /** @default Typography */
    label: SlotProps<typeof Typography, VireoFormSwitchFieldLabelSlotPropsOverrides, VireoFormSwitchFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormSwitchFieldFormHelperTextSlotPropsOverrides, VireoFormSwitchFieldOwnerState>;
}>;
export interface VireoFormSwitchFieldSwitchSlotPropsOverrides {
    [key: `data-${string}`]: VireoDataAttributeValue;
    /** Compatibility alias merged into MUI's native `input` slot. */
    inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
    /** Compatibility alias forwarded to MUI's native `input` slot. */
    inputRef?: React.Ref<HTMLInputElement>;
}

Valid keys for VireoFormTemporalField utility classes and theme style overrides.

/** Valid keys for VireoFormTemporalField utility classes and theme style overrides. */
export type VireoFormTemporalFieldClassKey = keyof VireoFormTemporalFieldClasses;

Utility classes available to VireoFormTemporalField.

/** Utility classes available to VireoFormTemporalField. */
export type VireoFormTemporalFieldClasses = Record<VireoFormTemporalFieldSlotName | "dirty" | "touched" | "invalid" | "errorVisible" | "validating" | "submitting" | "disabled" | "readOnly" | "hasValue", string>;

Props VireoFormTemporalField inherits from its default root after excluding component-owned props.

/** Props VireoFormTemporalField inherits from its default root after excluding component-owned props. */
export type VireoFormTemporalFieldInheritedProps = Omit<BoxProps<"div">, "children" | "component" | "defaultValue" | "onChange" | "onError" | "value">;
export type VireoFormTemporalFieldMode = "year" | "month" | "year-month" | "date" | "time" | "date-time";
export type VireoFormTemporalFieldModeProps = {
    mode: "year";
    openTo?: "year";
    pickerProps?: VireoFormTemporalFieldDatePickerProps;
    ampm?: never;
    precision?: never;
    minuteStep?: never;
    secondStep?: never;
} | {
    mode: "month";
    openTo?: "month";
    pickerProps?: VireoFormTemporalFieldDatePickerProps;
    ampm?: never;
    precision?: never;
    minuteStep?: never;
    secondStep?: never;
} | {
    mode: "year-month";
    openTo?: "year" | "month";
    pickerProps?: VireoFormTemporalFieldDatePickerProps;
    ampm?: never;
    precision?: never;
    minuteStep?: never;
    secondStep?: never;
} | {
    mode: "date";
    openTo?: "year" | "month" | "day";
    pickerProps?: VireoFormTemporalFieldDatePickerProps;
    ampm?: never;
    precision?: never;
    minuteStep?: never;
    secondStep?: never;
} | {
    mode: "time";
    openTo?: "hours" | "minutes" | "seconds";
    pickerProps?: VireoFormTemporalFieldTimePickerProps;
    /** @default false */
    ampm?: boolean;
    /** @default 'minute' */
    precision?: VireoFormTemporalFieldPrecision;
    /** @default 1 */
    minuteStep?: number;
    /** @default 1 */
    secondStep?: number;
} | {
    mode: "date-time";
    openTo?: "year" | "month" | "day" | "hours" | "minutes" | "seconds";
    pickerProps?: VireoFormTemporalFieldDateTimePickerProps;
    /** @default false */
    ampm?: boolean;
    /** @default 'minute' */
    precision?: VireoFormTemporalFieldPrecision;
    /** @default 1 */
    minuteStep?: number;
    /** @default 1 */
    secondStep?: number;
};

Props owned by the bound temporal form field. The field name and value remain owned by `form.Field`.

/** Props owned by the bound temporal form field. The field name and value remain owned by `form.Field`. */
export type VireoFormTemporalFieldOwnProps = VireoFormTemporalFieldCommonProps & VireoFormTemporalFieldModeProps;
export type VireoFormTemporalFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    hasValue: boolean;
    invalid: boolean;
    mode: VireoFormTemporalFieldMode;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.TemporalField`.

/** Props accepted by `field.TemporalField`. */
export type VireoFormTemporalFieldProps = VireoFormTemporalFieldOwnProps & VireoFormTemporalFieldInheritedProps;
export type VireoFormTemporalFieldSlots = {
    [TSlotName in VireoFormTemporalFieldSlotName]: React.ElementType;
};
export type VireoFormTemporalFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormTemporalFieldSlots, {
    /** @default 'div' */
    root: SlotProps<"div", VireoFormTemporalFieldRootSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default PickersOutlinedInput; follows `variant` for standard and filled fields. */
    input: SlotProps<typeof PickersOutlinedInput, VireoFormTemporalFieldInputSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default 'input' */
    htmlInput: SlotProps<"input", VireoFormTemporalFieldHtmlInputSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormTemporalFieldFormHelperTextSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default IconButton */
    openPickerButton: SlotProps<typeof IconButton, VireoFormTemporalFieldOpenPickerButtonSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default CalendarIcon */
    openPickerIcon: SlotProps<typeof SvgIcon, VireoFormTemporalFieldOpenPickerIconSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default IconButton */
    clearButton: SlotProps<typeof IconButton, VireoFormTemporalFieldClearButtonSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
    /** @default ClearIcon */
    clearIcon: SlotProps<typeof SvgIcon, VireoFormTemporalFieldClearIconSlotPropsOverrides, VireoFormTemporalFieldOwnerState>;
}>;

Valid keys for VireoFormTextField utility classes and theme style overrides.

/** Valid keys for VireoFormTextField utility classes and theme style overrides. */
export type VireoFormTextFieldClassKey = keyof VireoFormTextFieldClasses;

Utility classes available to VireoFormTextField.

/** Utility classes available to VireoFormTextField. */
export type VireoFormTextFieldClasses = Record<VireoFormTextFieldSlotName | VireoFormTextFieldStateName, string>;

Props inherited from MUI TextField after excluding form-owned and Vireo-owned props.

/** Props inherited from MUI TextField after excluding form-owned and Vireo-owned props. */
export type VireoFormTextFieldInheritedProps = Omit<TextFieldProps, VireoFormTextFieldComponentOwnedProp>;

Props owned by the bound form text field. The field name and value remain owned by `form.Field`.

/** Props owned by the bound form text field. The field name and value remain owned by `form.Field`. */
export type VireoFormTextFieldOwnProps = VireoFormTextFieldSlotsAndSlotProps & {
    /** Override or extend the utility classes applied to each slot and state. */
    classes?: Partial<VireoFormTextFieldClasses>;
    disabled?: boolean;
    /** Adds an error presentation state without suppressing validation errors. */
    error?: boolean;
    /** Overrides the enclosing form's error-display policy for this field. */
    errorDisplay?: VireoFormErrorDisplay;
    /** Overrides the enclosing form's validation-error formatter for this field. */
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Shown when no visible validation error takes precedence. Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    /** Ref forwarded to the native input or textarea. */
    inputRef?: React.Ref<HTMLElement>;
    onBlur?: NonNullable<TextFieldProps["onBlur"]>;
    onChange?: NonNullable<TextFieldProps["onChange"]>;
    readOnly?: boolean;
    /** Overrides the enclosing form's fallback for an empty read-only value. */
    readOnlyEmptyValue?: React.ReactNode;
    /** Replaces the default string presentation in read-only mode. */
    renderReadOnlyValue?: (value: string) => React.ReactNode;
    required?: boolean;
};
export type VireoFormTextFieldOwnerState = {
    dirty: boolean;
    disabled: boolean;
    errorVisible: boolean;
    invalid: boolean;
    readOnly: boolean;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.TextField`.

/** Props accepted by `field.TextField`. */
export type VireoFormTextFieldProps = VireoFormTextFieldOwnProps & VireoFormTextFieldInheritedProps;

Replaceable semantic regions exposed by the bound form text field.

/** Replaceable semantic regions exposed by the bound form text field. */
export type VireoFormTextFieldSlots = {
    root: React.ElementType;
    inputLabel: React.ElementType;
    input: React.ElementType;
    htmlInput: React.ElementType;
    formHelperText: React.ElementType;
    select: React.ElementType;
};

Slot props exposed by the bound form text field.

/** Slot props exposed by the bound form text field. */
export type VireoFormTextFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormTextFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormTextFieldRootSlotPropsOverrides, VireoFormTextFieldOwnerState>;
    /** @default InputLabel */
    inputLabel: SlotProps<typeof InputLabel, VireoFormTextFieldInputLabelSlotPropsOverrides, VireoFormTextFieldOwnerState>;
    /** @default OutlinedInput; follows `variant` for standard and filled fields. */
    input: SlotProps<typeof OutlinedInput, VireoFormTextFieldInputSlotPropsOverrides, VireoFormTextFieldOwnerState>;
    /** @default 'input' */
    htmlInput: SlotProps<"input", VireoFormTextFieldHtmlInputSlotPropsOverrides, VireoFormTextFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormTextFieldFormHelperTextSlotPropsOverrides, VireoFormTextFieldOwnerState>;
    /** @default Select */
    select: SlotProps<typeof Select, VireoFormTextFieldSelectSlotPropsOverrides, VireoFormTextFieldOwnerState>;
}>;

Accessible naming contract for the toggle-button group itself.

/** Accessible naming contract for the toggle-button group itself. */
export type VireoFormToggleButtonGroupFieldAccessibleNameProps = {
    "aria-label": string;
    "aria-labelledby"?: string;
} | {
    "aria-label"?: undefined;
    "aria-labelledby": string;
};

Valid keys for VireoFormToggleButtonGroupField utility classes and theme style overrides.

/** Valid keys for VireoFormToggleButtonGroupField utility classes and theme style overrides. */
export type VireoFormToggleButtonGroupFieldClassKey = keyof VireoFormToggleButtonGroupFieldClasses;

Utility classes available to VireoFormToggleButtonGroupField.

/** Utility classes available to VireoFormToggleButtonGroupField. */
export type VireoFormToggleButtonGroupFieldClasses = Record<VireoFormToggleButtonGroupFieldSlotName | VireoFormToggleButtonGroupFieldStateName, string>;
export type VireoFormToggleButtonGroupFieldExclusiveProps<TValue extends VireoFormToggleButtonGroupFieldValue> = VireoFormToggleButtonGroupFieldSharedProps<TValue> & {
    multiple?: false;
    onChange?: (event: React.MouseEvent<HTMLElement>, value: TValue | null) => void;
    onValueChange?: (value: TValue | null) => void;
};

Props inherited from FormControl after excluding form-owned and Vireo-owned props.

/** Props inherited from FormControl after excluding form-owned and Vireo-owned props. */
export type VireoFormToggleButtonGroupFieldInheritedProps = Omit<FormControlProps, ComponentOwnedProp>;
export type VireoFormToggleButtonGroupFieldMultipleProps<TValue extends VireoFormToggleButtonGroupFieldValue> = VireoFormToggleButtonGroupFieldSharedProps<TValue> & {
    multiple: true;
    onChange?: (event: React.MouseEvent<HTMLElement>, value: TValue[]) => void;
    onValueChange?: (value: TValue[]) => void;
};

One ordered choice rendered by `field.ToggleButtonGroupField`.

/** One ordered choice rendered by `field.ToggleButtonGroupField`. */
export type VireoFormToggleButtonGroupFieldOption<TValue extends VireoFormToggleButtonGroupFieldValue> = {
    value: TValue;
    label: React.ReactNode;
    disabled?: boolean;
    /** Accessible name for icon-only or otherwise non-descriptive visible content. */
    ariaLabel?: string;
};
export type VireoFormToggleButtonGroupFieldOptionProps = Omit<ToggleButtonProps, ProtectedToggleButtonProp> & {
    [key: `data-${string}`]: VireoDataAttributeValue;
};
export type VireoFormToggleButtonGroupFieldOwnerState = {
    color: NonNullable<ToggleButtonGroupProps["color"]>;
    dirty: boolean;
    disabled: boolean;
    disableClearable: boolean;
    errorVisible: boolean;
    fullWidth: boolean;
    hasValue: boolean;
    invalid: boolean;
    multiple: boolean;
    orientation: NonNullable<ToggleButtonGroupProps["orientation"]>;
    readOnly: boolean;
    required: boolean;
    size: NonNullable<ToggleButtonGroupProps["size"]>;
    submitting: boolean;
    touched: boolean;
    validating: boolean;
};

Props accepted by `field.ToggleButtonGroupField`.

/** Props accepted by `field.ToggleButtonGroupField`. */
export type VireoFormToggleButtonGroupFieldProps<TValue extends VireoFormToggleButtonGroupFieldValue = VireoFormToggleButtonGroupFieldValue> = (VireoFormToggleButtonGroupFieldExclusiveProps<TValue> | VireoFormToggleButtonGroupFieldMultipleProps<TValue>) & VireoFormToggleButtonGroupFieldAccessibleNameProps & VireoFormToggleButtonGroupFieldInheritedProps;
export type VireoFormToggleButtonGroupFieldSharedProps<TValue extends VireoFormToggleButtonGroupFieldValue> = VireoFormToggleButtonGroupFieldSlotsAndSlotProps & {
    options: readonly VireoFormToggleButtonGroupFieldOption<TValue>[];
    renderOption?: (option: VireoFormToggleButtonGroupFieldOption<TValue>, state: VireoFormToggleButtonGroupFieldOptionState) => React.ReactNode;
    getOptionProps?: (option: VireoFormToggleButtonGroupFieldOption<TValue>, state: VireoFormToggleButtonGroupFieldOptionState) => VireoFormToggleButtonGroupFieldOptionProps;
    classes?: Partial<VireoFormToggleButtonGroupFieldClasses>;
    color?: ToggleButtonGroupProps["color"];
    disabled?: boolean;
    disableClearable?: boolean;
    error?: boolean;
    errorDisplay?: VireoFormErrorDisplay;
    formatError?: VireoFormErrorFormatter;
    /** @default true */
    fullWidth?: boolean;
    /** Defaults to a reserved line; pass `null` to remove it. @default ' ' */
    helperText?: React.ReactNode;
    orientation?: ToggleButtonGroupProps["orientation"];
    readOnly?: boolean;
    readOnlyEmptyValue?: React.ReactNode;
    renderReadOnlyValue?: (value: TValue | readonly TValue[] | null, selectedOptions: readonly VireoFormToggleButtonGroupFieldOption<TValue>[]) => React.ReactNode;
    required?: boolean;
    size?: ToggleButtonGroupProps["size"];
    onBlur?: NonNullable<ToggleButtonGroupProps["onBlur"]>;
    "aria-describedby"?: string;
};

Replaceable semantic regions exposed by the bound toggle-button-group field.

/** Replaceable semantic regions exposed by the bound toggle-button-group field. */
export type VireoFormToggleButtonGroupFieldSlots = {
    root: React.ElementType;
    toggleButtonGroup: React.ElementType;
    toggleButton: React.ElementType;
    formHelperText: React.ElementType;
};

Slot props exposed by the bound toggle-button-group field.

/** Slot props exposed by the bound toggle-button-group field. */
export type VireoFormToggleButtonGroupFieldSlotsAndSlotProps = CreateSlotsAndSlotProps<VireoFormToggleButtonGroupFieldSlots, {
    /** @default FormControl */
    root: SlotProps<typeof FormControl, VireoFormToggleButtonGroupFieldRootSlotPropsOverrides, VireoFormToggleButtonGroupFieldOwnerState>;
    /** @default ToggleButtonGroup */
    toggleButtonGroup: SlotProps<typeof ToggleButtonGroup, VireoFormToggleButtonGroupFieldToggleButtonGroupSlotPropsOverrides, VireoFormToggleButtonGroupFieldOwnerState>;
    /** @default ToggleButton */
    toggleButton: SlotProps<typeof ToggleButton, VireoFormToggleButtonGroupFieldToggleButtonSlotPropsOverrides, VireoFormToggleButtonGroupFieldOwnerState>;
    /** @default FormHelperText */
    formHelperText: SlotProps<typeof FormHelperText, VireoFormToggleButtonGroupFieldFormHelperTextSlotPropsOverrides, VireoFormToggleButtonGroupFieldOwnerState>;
}>;

Scalar option identifiers supported by `field.ToggleButtonGroupField`.

/** Scalar option identifiers supported by `field.ToggleButtonGroupField`. */
export type VireoFormToggleButtonGroupFieldValue = string | number;
export type VireoMultiStepChangeEvent<TStepId extends string = string> = {
    previousStepId: TStepId;
    stepId: TStepId;
    previousStepIndex: number;
    stepIndex: number;
    direction: VireoMultiStepDirection;
    reason: VireoMultiStepChangeReason;
};
export type VireoMultiStepChangeReason = "next" | "previous" | "direct" | "validation-error" | "condition" | "reset";

Metadata describing one stable step in a Vireo multi-step form.

/** Metadata describing one stable step in a Vireo multi-step form. */
export type VireoMultiStepDescriptor<TFormData, TStepId extends string = string> = {
    id: TStepId;
    label: React.ReactNode;
    ariaLabel?: string;
    fields?: readonly DeepKeys<TFormData>[];
    when?: (values: TFormData) => boolean;
};
export type VireoMultiStepFormApi<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta, TStepId extends string> = VireoFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta> & {
    Form: React.ForwardRefExoticComponent<VireoFormProps & React.RefAttributes<HTMLFormElement>>;
    MultiStep: React.ForwardRefExoticComponent<VireoFormMultiStepProps & React.RefAttributes<HTMLDivElement>>;
    Step: React.ForwardRefExoticComponent<Omit<VireoFormStepProps, "id" | "ref"> & {
        id: TStepId;
    } & React.RefAttributes<HTMLElement>>;
    StepProgress: React.ForwardRefExoticComponent<VireoFormStepProgressProps & React.RefAttributes<HTMLDivElement>>;
    PreviousStepButton: React.ForwardRefExoticComponent<VireoFormPreviousStepButtonProps & React.RefAttributes<HTMLButtonElement>>;
    NextStepButton: React.ForwardRefExoticComponent<VireoFormNextStepButtonProps & React.RefAttributes<HTMLButtonElement>>;
    MultiStepSubscribe: <TSelected = VireoMultiStepState<TStepId>>(props: VireoMultiStepSubscribeProps<TStepId, TSelected>) => React.ReactNode;
    readonly multiStepState: VireoMultiStepState<TStepId>;
    readonly steps: readonly VireoMultiStepStepState<TStepId>[];
    readonly activeSteps: readonly VireoMultiStepStepState<TStepId>[];
    readonly currentStep: VireoMultiStepStepState<TStepId>;
    readonly currentStepId: TStepId;
    readonly currentStepIndex: number;
    readonly activeStepCount: number;
    readonly completedStepCount: number;
    readonly isFirstStep: boolean;
    readonly isLastStep: boolean;
    readonly isStepTransitioning: boolean;
    readonly canGoPrevious: boolean;
    readonly canGoNext: boolean;
    readonly canSubmitCurrentStep: boolean;
    getStepState: (id: TStepId) => VireoMultiStepStepState<TStepId> | undefined;
    goToNextStep: () => Promise<VireoMultiStepNavigationResult<TStepId>>;
    goToPreviousStep: () => Promise<VireoMultiStepNavigationResult<TStepId>>;
    goToStep: (id: TStepId) => Promise<VireoMultiStepNavigationResult<TStepId>>;
};
export type VireoMultiStepNavigationResult<TStepId extends string = string> = {
    status: "changed";
    previousStepId: TStepId;
    stepId: TStepId;
    requestedStepId: TStepId;
    reachedRequestedStep: boolean;
    reason: "next" | "previous" | "direct" | "incomplete-step";
} | {
    status: "invalid";
    stepId: TStepId;
    requestedStepId: TStepId;
    errorPaths: string[];
} | {
    status: "unchanged";
    stepId: TStepId;
    requestedStepId: TStepId;
    reason: "first-step" | "last-step" | "same-step" | "unavailable-step" | "transition-pending";
} | {
    status: "cancelled";
    stepId: TStepId;
    requestedStepId: TStepId;
    reason: "reset" | "step-changed" | "form-unmounted";
};

Reactive public state exposed by a Vireo multi-step form.

/** Reactive public state exposed by a Vireo multi-step form. */
export type VireoMultiStepState<TStepId extends string = string> = {
    steps: readonly VireoMultiStepStepState<TStepId>[];
    activeSteps: readonly VireoMultiStepStepState<TStepId>[];
    currentStep: VireoMultiStepStepState<TStepId>;
    currentStepId: TStepId;
    currentStepIndex: number;
    /** Direction of the most recent current-step change. */
    direction: VireoMultiStepDirection;
    activeStepCount: number;
    completedStepCount: number;
    isFirstStep: boolean;
    isLastStep: boolean;
    isStepTransitioning: boolean;
    canGoPrevious: boolean;
    canGoNext: boolean;
    canSubmitCurrentStep: boolean;
};
export type VireoMultiStepStatus = "upcoming" | "visited" | "complete" | "error";

Public state for one configured multi-step form step.

/** Public state for one configured multi-step form step. */
export type VireoMultiStepStepState<TStepId extends string = string> = {
    id: TStepId;
    label: React.ReactNode;
    ariaLabel?: string;
    fields: readonly string[];
    declaredIndex: number;
    activeIndex: number | null;
    isActive: boolean;
    isCurrent: boolean;
    isVisited: boolean;
    isComplete: boolean;
    hasError: boolean;
    canNavigate: boolean;
    status: VireoMultiStepStatus | null;
};
export type VireoMultiStepSubscribeProps<TStepId extends string, TSelected = VireoMultiStepState<TStepId>> = {
    selector?: (state: VireoMultiStepState<TStepId>) => TSelected;
    children: (selected: TSelected) => React.ReactNode;
};

Coordinates a guarded form across mobile full-screen-dialog and desktop overlay surfaces.

/** Coordinates a guarded form across mobile full-screen-dialog and desktop overlay surfaces. */
export declare const VireoResponsiveFormOverlay: React.ForwardRefExoticComponent<import("./VireoResponsiveFormOverlay.types.js").VireoResponsiveFormOverlaySlotsAndSlotProps & {
    title: React.ReactNode;
    closeLabel: string;
    closeDisabled?: boolean;
    children: React.ReactNode;
    actions?: import("./VireoResponsiveFormOverlay.types.js").VireoResponsiveFormOverlayActions;
    renderForm?: (children: React.ReactNode) => React.ReactNode;
    guardUnsavedChanges?: boolean;
    classes?: Partial<import("./VireoResponsiveFormOverlay.classes.js").VireoResponsiveFormOverlayClasses>;
} & Omit<import("../../../../../../index.js").VireoResponsiveOverlayFrameProps, "aria-label" | "aria-labelledby" | "children" | "classes" | "onClose" | "open" | "slotProps" | "slots" | "title"> & {
    open: boolean;
    onClose: () => void;
} & React.RefAttributes<HTMLDivElement>>;

Guarded actions available to a rendered overlay action row.

/** Guarded actions available to a rendered overlay action row. */
export type VireoResponsiveFormOverlayActionContext = {
    /** Requests closure through close disabling and the current unsaved-changes scope. */
    requestClose: () => void;
};

Static actions or a render callback that receives the guarded close request.

/** Static actions or a render callback that receives the guarded close request. */
export type VireoResponsiveFormOverlayActions = React.ReactNode | ((context: VireoResponsiveFormOverlayActionContext) => React.ReactNode);

Valid keys for VireoResponsiveFormOverlay utility classes and theme style overrides.

/** Valid keys for VireoResponsiveFormOverlay utility classes and theme style overrides. */
export type VireoResponsiveFormOverlayClassKey = keyof VireoResponsiveFormOverlayClasses;

Utility classes available to VireoResponsiveFormOverlay.

/** Utility classes available to VireoResponsiveFormOverlay. */
export type VireoResponsiveFormOverlayClasses = Record<VireoResponsiveFormOverlaySlotName, string>;

Props VireoResponsiveFormOverlay inherits from its default root after excluding component-owned props.

/** Props VireoResponsiveFormOverlay inherits from its default root after excluding component-owned props. */
export type VireoResponsiveFormOverlayInheritedProps = Omit<VireoResponsiveOverlayFrameProps, "aria-label" | "aria-labelledby" | "children" | "classes" | "onClose" | "open" | "slotProps" | "slots" | "title"> & {
    open: boolean;
    onClose: () => void;
};

Props owned by {@link VireoResponsiveFormOverlay }.

/** Props owned by {@link VireoResponsiveFormOverlay}. */
export type VireoResponsiveFormOverlayOwnProps = VireoResponsiveFormOverlaySlotsAndSlotProps & {
    /** Visible overlay heading. */
    title: React.ReactNode;
    /** Accessible label for the close action. */
    closeLabel: string;
    /** Prevents dismissal while a form operation is in progress. @default false */
    closeDisabled?: boolean;
    /** Form content rendered inside the responsive surface. */
    children: React.ReactNode;
    /** Optional persistent action row rendered after the scrolling content. */
    actions?: VireoResponsiveFormOverlayActions;
    /**
     * Wraps the content and action regions in one semantic form boundary.
     * The returned wrapper is normalized to fill the responsive overlay body.
     */
    renderForm?: (children: React.ReactNode) => React.ReactNode;
    /** Whether close requests participate in the nearest unsaved-changes scope. @default true */
    guardUnsavedChanges?: boolean;
    /** Override or extend the utility classes applied to each slot. */
    classes?: Partial<VireoResponsiveFormOverlayClasses>;
};
export type VireoResponsiveFormOverlayOwnerState = {
    open: boolean;
    closeDisabled: boolean;
    hasActions: boolean;
    hasFormWrapper: boolean;
};

Props accepted by {@link VireoResponsiveFormOverlay }.

/** Props accepted by {@link VireoResponsiveFormOverlay}. */
export type VireoResponsiveFormOverlayProps = VireoResponsiveFormOverlayOwnProps & VireoResponsiveFormOverlayInheritedProps;

Replaceable semantic regions exposed by {@link VireoResponsiveFormOverlay }.

/** Replaceable semantic regions exposed by {@link VireoResponsiveFormOverlay}. */
export type VireoResponsiveFormOverlaySlots = {
    [TSlotName in VireoResponsiveFormOverlaySlotName]: React.ElementType;
};

Slot props exposed by {@link VireoResponsiveFormOverlay }.

/** Slot props exposed by {@link VireoResponsiveFormOverlay}. */
export type VireoResponsiveFormOverlaySlotsAndSlotProps = CreateSlotsAndSlotProps<VireoResponsiveFormOverlaySlots, {
    /** @default VireoResponsiveOverlayFrame */
    root: SlotProps<typeof VireoResponsiveOverlayFrame, VireoResponsiveFormOverlayRootSlotPropsOverrides, VireoResponsiveFormOverlayOwnerState>;
    /** @default VireoOverlayHeader */
    header: SlotProps<typeof VireoOverlayHeader, VireoResponsiveFormOverlayHeaderSlotPropsOverrides, VireoResponsiveFormOverlayOwnerState>;
    /** @default Box */
    body: SlotProps<typeof Box, VireoResponsiveFormOverlayBodySlotPropsOverrides, VireoResponsiveFormOverlayOwnerState>;
    /** @default DialogContent */
    content: SlotProps<typeof DialogContent, VireoResponsiveFormOverlayContentSlotPropsOverrides, VireoResponsiveFormOverlayOwnerState>;
    /** @default DialogActions */
    actions: SlotProps<typeof DialogActions, VireoResponsiveFormOverlayActionsSlotPropsOverrides, VireoResponsiveFormOverlayOwnerState>;
}>;

Returns the generated utility class name for a VireoFileImagePreview slot or state.

/** Returns the generated utility class name for a VireoFileImagePreview slot or state. */
export declare function getVireoFileImagePreviewUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormActions slot or state.

/** Returns the generated utility class name for a VireoFormActions slot or state. */
export declare function getVireoFormActionsUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormAutocompleteField slot or state.

/** Returns the generated utility class name for a VireoFormAutocompleteField slot or state. */
export declare function getVireoFormAutocompleteFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormAutocompleteMultipleField slot or state.

/** Returns the generated utility class name for a VireoFormAutocompleteMultipleField slot or state. */
export declare function getVireoFormAutocompleteMultipleFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormCheckboxField slot or state.

/** Returns the generated utility class name for a VireoFormCheckboxField slot or state. */
export declare function getVireoFormCheckboxFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormCounterField slot or state.

/** Returns the generated utility class name for a VireoFormCounterField slot or state. */
export declare function getVireoFormCounterFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormErrorSummary slot or state.

/** Returns the generated utility class name for a VireoFormErrorSummary slot or state. */
export declare function getVireoFormErrorSummaryUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormFileField slot or state.

/** Returns the generated utility class name for a VireoFormFileField slot or state. */
export declare function getVireoFormFileFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormFileListField slot or state.

/** Returns the generated utility class name for a VireoFormFileListField slot or state. */
export declare function getVireoFormFileListFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormFreeSoloAutocompleteField slot or state.

/** Returns the generated utility class name for a VireoFormFreeSoloAutocompleteField slot or state. */
export declare function getVireoFormFreeSoloAutocompleteFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormFreeSoloAutocompleteMultipleField slot or state.

/** Returns the generated utility class name for a VireoFormFreeSoloAutocompleteMultipleField slot or state. */
export declare function getVireoFormFreeSoloAutocompleteMultipleFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormMultiStep slot or state.

/** Returns the generated utility class name for a VireoFormMultiStep slot or state. */
export declare function getVireoFormMultiStepUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormNextStepButton slot or state.

/** Returns the generated utility class name for a VireoFormNextStepButton slot or state. */
export declare function getVireoFormNextStepButtonUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormNumberField slot or state.

/** Returns the generated utility class name for a VireoFormNumberField slot or state. */
export declare function getVireoFormNumberFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormPreviousStepButton slot or state.

/** Returns the generated utility class name for a VireoFormPreviousStepButton slot or state. */
export declare function getVireoFormPreviousStepButtonUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormRadioGroupField slot or state.

/** Returns the generated utility class name for a VireoFormRadioGroupField slot or state. */
export declare function getVireoFormRadioGroupFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormReadOnlyValue slot or state.

/** Returns the generated utility class name for a VireoFormReadOnlyValue slot or state. */
export declare function getVireoFormReadOnlyValueUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormSectionItem slot or state.

/** Returns the generated utility class name for a VireoFormSectionItem slot or state. */
export declare function getVireoFormSectionItemUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormSection slot or state.

/** Returns the generated utility class name for a VireoFormSection slot or state. */
export declare function getVireoFormSectionUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormSelectField slot or state.

/** Returns the generated utility class name for a VireoFormSelectField slot or state. */
export declare function getVireoFormSelectFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormSelectMultipleField slot or state.

/** Returns the generated utility class name for a VireoFormSelectMultipleField slot or state. */
export declare function getVireoFormSelectMultipleFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormStepProgress slot or state.

/** Returns the generated utility class name for a VireoFormStepProgress slot or state. */
export declare function getVireoFormStepProgressUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormStep slot or state.

/** Returns the generated utility class name for a VireoFormStep slot or state. */
export declare function getVireoFormStepUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormSubmitButton slot or state.

/** Returns the generated utility class name for a VireoFormSubmitButton slot or state. */
export declare function getVireoFormSubmitButtonUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormSwitchField slot or state.

/** Returns the generated utility class name for a VireoFormSwitchField slot or state. */
export declare function getVireoFormSwitchFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormTemporalField slot or state.

/** Returns the generated utility class name for a VireoFormTemporalField slot or state. */
export declare function getVireoFormTemporalFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormTextField slot or state.

/** Returns the generated utility class name for a VireoFormTextField slot or state. */
export declare function getVireoFormTextFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoFormToggleButtonGroupField slot or state.

/** Returns the generated utility class name for a VireoFormToggleButtonGroupField slot or state. */
export declare function getVireoFormToggleButtonGroupFieldUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoForm slot or state.

/** Returns the generated utility class name for a VireoForm slot or state. */
export declare function getVireoFormUtilityClass(slot: string): string;

Returns the generated utility class name for a VireoResponsiveFormOverlay slot or state.

/** Returns the generated utility class name for a VireoResponsiveFormOverlay slot or state. */
export declare function getVireoResponsiveFormOverlayUtilityClass(slot: string): string;
functionuseVireoForm
export declare function useVireoForm<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta>(options: FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>): VireoFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;

Creates one TanStack-backed form with stable, typed multi-step navigation.

/** Creates one TanStack-backed form with stable, typed multi-step navigation. */
export declare function useVireoMultiStepForm<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta, const TSteps extends readonly VireoMultiStepDescriptor<TFormData, string>[]>(options: UseVireoMultiStepFormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta, TSteps>): VireoMultiStepFormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta, StepId<TSteps>>;

Generated utility class names keyed by each public VireoFileImagePreview class key.

/** Generated utility class names keyed by each public VireoFileImagePreview class key. */
export declare const vireoFileImagePreviewClasses: VireoFileImagePreviewClasses;

Generated utility class names keyed by each public VireoFormActions class key.

/** Generated utility class names keyed by each public VireoFormActions class key. */
export declare const vireoFormActionsClasses: VireoFormActionsClasses;

Generated utility class names keyed by each public VireoFormAutocompleteField class key.

/** Generated utility class names keyed by each public VireoFormAutocompleteField class key. */
export declare const vireoFormAutocompleteFieldClasses: VireoFormAutocompleteFieldClasses;

Generated utility class names keyed by each public VireoFormAutocompleteMultipleField class key.

/** Generated utility class names keyed by each public VireoFormAutocompleteMultipleField class key. */
export declare const vireoFormAutocompleteMultipleFieldClasses: VireoFormAutocompleteMultipleFieldClasses;

Generated utility class names keyed by each public VireoFormCheckboxField class key.

/** Generated utility class names keyed by each public VireoFormCheckboxField class key. */
export declare const vireoFormCheckboxFieldClasses: VireoFormCheckboxFieldClasses;

Generated utility class names keyed by each public VireoForm class key.

/** Generated utility class names keyed by each public VireoForm class key. */
export declare const vireoFormClasses: VireoFormClasses;

Generated utility class names keyed by each public VireoFormCounterField class key.

/** Generated utility class names keyed by each public VireoFormCounterField class key. */
export declare const vireoFormCounterFieldClasses: VireoFormCounterFieldClasses;

Generated utility class names keyed by each public VireoFormErrorSummary class key.

/** Generated utility class names keyed by each public VireoFormErrorSummary class key. */
export declare const vireoFormErrorSummaryClasses: VireoFormErrorSummaryClasses;

Generated utility class names keyed by each public VireoFormFileField class key.

/** Generated utility class names keyed by each public VireoFormFileField class key. */
export declare const vireoFormFileFieldClasses: VireoFormFileFieldClasses;

Generated utility class names keyed by each public VireoFormFileListField class key.

/** Generated utility class names keyed by each public VireoFormFileListField class key. */
export declare const vireoFormFileListFieldClasses: VireoFormFileListFieldClasses;

Generated utility class names keyed by each public VireoFormFreeSoloAutocompleteField class key.

/** Generated utility class names keyed by each public VireoFormFreeSoloAutocompleteField class key. */
export declare const vireoFormFreeSoloAutocompleteFieldClasses: VireoFormFreeSoloAutocompleteFieldClasses;

Generated utility class names keyed by each public VireoFormFreeSoloAutocompleteMultipleField class key.

/** Generated utility class names keyed by each public VireoFormFreeSoloAutocompleteMultipleField class key. */
export declare const vireoFormFreeSoloAutocompleteMultipleFieldClasses: VireoFormFreeSoloAutocompleteMultipleFieldClasses;

Generated utility class names keyed by each public VireoFormMultiStep class key.

/** Generated utility class names keyed by each public VireoFormMultiStep class key. */
export declare const vireoFormMultiStepClasses: VireoFormMultiStepClasses;

Generated utility class names keyed by each public VireoFormNextStepButton class key.

/** Generated utility class names keyed by each public VireoFormNextStepButton class key. */
export declare const vireoFormNextStepButtonClasses: VireoFormNextStepButtonClasses;

Generated utility class names keyed by each public VireoFormNumberField class key.

/** Generated utility class names keyed by each public VireoFormNumberField class key. */
export declare const vireoFormNumberFieldClasses: VireoFormNumberFieldClasses;

Generated utility class names keyed by each public VireoFormPreviousStepButton class key.

/** Generated utility class names keyed by each public VireoFormPreviousStepButton class key. */
export declare const vireoFormPreviousStepButtonClasses: VireoFormPreviousStepButtonClasses;

Generated utility class names keyed by each public VireoFormRadioGroupField class key.

/** Generated utility class names keyed by each public VireoFormRadioGroupField class key. */
export declare const vireoFormRadioGroupFieldClasses: VireoFormRadioGroupFieldClasses;

Generated utility class names keyed by each public VireoFormReadOnlyValue class key.

/** Generated utility class names keyed by each public VireoFormReadOnlyValue class key. */
export declare const vireoFormReadOnlyValueClasses: VireoFormReadOnlyValueClasses;

Generated utility class names keyed by each public VireoFormSection class key.

/** Generated utility class names keyed by each public VireoFormSection class key. */
export declare const vireoFormSectionClasses: VireoFormSectionClasses;

Generated utility class names keyed by each public VireoFormSectionItem class key.

/** Generated utility class names keyed by each public VireoFormSectionItem class key. */
export declare const vireoFormSectionItemClasses: VireoFormSectionItemClasses;

Generated utility class names keyed by each public VireoFormSelectField class key.

/** Generated utility class names keyed by each public VireoFormSelectField class key. */
export declare const vireoFormSelectFieldClasses: VireoFormSelectFieldClasses;

Generated utility class names keyed by each public VireoFormSelectMultipleField class key.

/** Generated utility class names keyed by each public VireoFormSelectMultipleField class key. */
export declare const vireoFormSelectMultipleFieldClasses: VireoFormSelectMultipleFieldClasses;

Generated utility class names keyed by each public VireoFormStep class key.

/** Generated utility class names keyed by each public VireoFormStep class key. */
export declare const vireoFormStepClasses: VireoFormStepClasses;

Generated utility class names keyed by each public VireoFormStepProgress class key.

/** Generated utility class names keyed by each public VireoFormStepProgress class key. */
export declare const vireoFormStepProgressClasses: VireoFormStepProgressClasses;

Generated utility class names keyed by each public VireoFormSubmitButton class key.

/** Generated utility class names keyed by each public VireoFormSubmitButton class key. */
export declare const vireoFormSubmitButtonClasses: VireoFormSubmitButtonClasses;

Generated utility class names keyed by each public VireoFormSwitchField class key.

/** Generated utility class names keyed by each public VireoFormSwitchField class key. */
export declare const vireoFormSwitchFieldClasses: VireoFormSwitchFieldClasses;

Generated utility class names keyed by each public VireoFormTemporalField class key.

/** Generated utility class names keyed by each public VireoFormTemporalField class key. */
export declare const vireoFormTemporalFieldClasses: VireoFormTemporalFieldClasses;

Generated utility class names keyed by each public VireoFormTextField class key.

/** Generated utility class names keyed by each public VireoFormTextField class key. */
export declare const vireoFormTextFieldClasses: VireoFormTextFieldClasses;

Generated utility class names keyed by each public VireoFormToggleButtonGroupField class key.

/** Generated utility class names keyed by each public VireoFormToggleButtonGroupField class key. */
export declare const vireoFormToggleButtonGroupFieldClasses: VireoFormToggleButtonGroupFieldClasses;

Generated utility class names keyed by each public VireoResponsiveFormOverlay class key.

/** Generated utility class names keyed by each public VireoResponsiveFormOverlay class key. */
export declare const vireoResponsiveFormOverlayClasses: VireoResponsiveFormOverlayClasses;