import { AllDateTimeFormat } from 'hisonjs';
import { ApiDelete } from 'hisonjs';
import { ApiDeleteUrl } from 'hisonjs';
import { ApiGet } from 'hisonjs';
import { ApiGetUrl } from 'hisonjs';
import { ApiPatch } from 'hisonjs';
import { ApiPatchUrl } from 'hisonjs';
import { ApiPost } from 'hisonjs';
import { ApiPostUrl } from 'hisonjs';
import { ApiPut } from 'hisonjs';
import { ApiPutUrl } from 'hisonjs';
import { App } from 'vue';
import { Attrs } from 'vue';
import { CachingModule } from 'hisonjs';
import { Cell } from 'vanillagrid2';
import { CellData } from 'vanillagrid2';
import { CellRecord } from 'vanillagrid2';
import { Chart } from 'chart.js';
import { ChartData } from 'chart.js';
import type * as ChartNS from 'chart.js';
import { ChartOptions } from 'chart.js';
import { ChartType } from 'chart.js';
import { CheckByte } from 'vanillagrid2';
import { ClassNames } from 'vanillanote2';
import { ColInfo } from 'vanillagrid2';
import { Colors } from 'vanillanote2';
import { ColorSet } from 'vanillagrid2';
import { Component } from 'vue';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { ComponentPublicInstance } from 'vue';
import { ComputedRef } from 'vue';
import { Consts } from 'vanillanote2';
import { CountDateType } from 'hisonjs';
import { createHison } from 'hisonjs';
import { Csses } from 'vanillanote2';
import { CSSProperties } from 'vue';
import { Data } from 'hisonjs';
import { DataModel } from 'hisonjs';
import { DataModelFillter } from 'hisonjs';
import { DataModelFormatter } from 'hisonjs';
import { DataModelValidator } from 'hisonjs';
import { DataType } from 'vanillagrid2';
import { DataWrapper } from 'hisonjs';
import { DateFormat } from 'hisonjs';
import { DateObject } from 'hisonjs';
import { DateTimeFormat } from 'hisonjs';
import { DateTimeObject } from 'hisonjs';
import { DayFormat } from 'hisonjs';
import { DayOfWeekFormat } from 'hisonjs';
import { DayOfWeekFullName } from 'hisonjs';
import { DayOfWeekFullNameKR } from 'hisonjs';
import { DayOfWeekShortName } from 'hisonjs';
import { DayOfWeekShortNameKR } from 'hisonjs';
import { DefaultColInfo } from 'vanillagrid2';
import { DefaultGridCssInfo } from 'vanillagrid2';
import { DefaultGridInfo } from 'vanillagrid2';
import { Defaults } from 'chart.js';
import { DefineComponent } from 'vue';
import { documentEvent } from 'vanillagrid2';
import { DocumentEvents } from 'vanillanote2';
import { ExtractPropTypes } from 'vue';
import { getVanillagrid } from 'vanillagrid2';
import { getVanillagridConfig } from 'vanillagrid2';
import { getVanillanote } from 'vanillanote2';
import { getVanillanoteConfig } from 'vanillanote2';
import { Align as GridAlign } from 'vanillagrid2';
import { BasicDataType as GridBasicDataType } from 'vanillagrid2';
import { GridCssInfo } from 'vanillagrid2';
import { DateFormat as GridDateFormat } from 'vanillagrid2';
import { GridInfo } from 'vanillagrid2';
import { GridMethods } from 'vanillagrid2';
import { MonthFormat as GridMonthFormat } from 'vanillagrid2';
import { RowStatus as GridRowStatus } from 'vanillagrid2';
import { VerticalAlign as GridVerticalAlign } from 'vanillagrid2';
import { Hison as Hison_2 } from 'hisonjs';
import { HourFormat } from 'hisonjs';
import { HourMinuteFormat } from 'hisonjs';
import { InterfaceApiDelete } from 'hisonjs';
import { InterfaceApiDeleteUrl } from 'hisonjs';
import { InterfaceApiGet } from 'hisonjs';
import { InterfaceApiGetUrl } from 'hisonjs';
import { InterfaceApiPatch } from 'hisonjs';
import { InterfaceApiPatchUrl } from 'hisonjs';
import { InterfaceApiPost } from 'hisonjs';
import { InterfaceApiPostUrl } from 'hisonjs';
import { InterfaceApiPut } from 'hisonjs';
import { InterfaceApiPutUrl } from 'hisonjs';
import { InterfaceCachingModule } from 'hisonjs';
import { InterfaceDataModel } from 'hisonjs';
import { InterfaceDataWrapper } from 'hisonjs';
import { LanguagePack } from 'vanillanote2';
import { LanguageSet } from 'vanillanote2';
import { Link } from 'hisonjs';
import { LooseRequired } from '@vue/shared';
import { MinuteFormat } from 'hisonjs';
import { MonthFormat } from 'hisonjs';
import { MonthFullName } from 'hisonjs';
import { MonthShortName } from 'hisonjs';
import { NoteData } from 'vanillanote2';
import { NoteFileData } from 'vanillanote2';
import { NoteImageData } from 'vanillanote2';
import { NoteLinkData } from 'vanillanote2';
import { NoteModeByDevice } from 'vanillanote2';
import { ToolPosition as NoteToolPosition } from 'vanillanote2';
import { NoteVideoData } from 'vanillanote2';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { Ref } from 'vue';
import { RendererElement } from 'vue';
import { RendererNode } from 'vue';
import { SecondFormat } from 'hisonjs';
import { SelectionPolicy } from 'vanillagrid2';
import { Shield } from 'hisonjs';
import { TimeFormat } from 'hisonjs';
import { TimeObject } from 'hisonjs';
import { Utils } from 'hisonjs';
import { Vanillagrid } from 'vanillagrid2';
import { VanillagridConfig } from 'vanillagrid2';
import { Vanillanote } from 'vanillanote2';
import { VanillanoteConfig } from 'vanillanote2';
import { VanillanoteElement } from 'vanillanote2';
import { Variables } from 'vanillanote2';
import { VNode } from 'vue';
import type * as VuecalNS from 'vue-cal';
import { YearFormat } from 'hisonjs';
import { YearMonthFormat } from 'hisonjs';

export { AllDateTimeFormat }

export { ApiDelete }

export { ApiDeleteUrl }

export { ApiGet }

export { ApiGetUrl }

export { ApiPatch }

export { ApiPatchUrl }

export { ApiPost }

export { ApiPostUrl }

export { ApiPut }

export { ApiPutUrl }

/**
 * Represents a file item attached to the HFileset component.
 *
 * This interface is used to describe both server-provided files (already uploaded)
 * and new files selected via input or drag-and-drop.
 */
export declare interface AttachedFileItem {
    /**
     * Unique identifier of the file from the server.
     * Used to distinguish pre-existing files stored in the DB.
     */
    fileId?: string;
    /**
     * Display name of the file (including extension).
     */
    fileName: string;
    /**
     * Size of the file in bytes.
     * This may be undefined for server-loaded files unless provided.
     */
    fileSize?: number;
    /**
     * Path or URL to download the file from the server.
     */
    filePath?: string;
    /**
     * File extension, such as `pdf`, `jpg`, `docx`.
     * This is automatically extracted from `fileName` if not provided.
     */
    extension?: string;
    /**
     * Native File object (from input or drag-and-drop).
     * Exists only for newly uploaded files.
     */
    file?: File;
    /**
     * Indicates whether this file was newly added by the user.
     */
    isNew?: boolean;
    /**
     * Indicates whether this file has been marked for deletion.
     * Deleted files will not appear in the visible file list.
     */
    isDeleted?: boolean;
}

export declare const BACK_IMAGE_ALIGN_VALUES: readonly ["left", "center", "right"];

export declare const BACK_IMAGE_STYLE_VALUES: readonly ["repeat", "no-repeat", "cover", "contain"];

export declare const BACK_IMAGE_VERTICAL_ALIGN_VALUES: readonly ["top", "center", "bottom"];

export declare const BACKGROUND_TYPE_VALUES: readonly ["filled", "empty", "transparent"];

export declare enum BackgroundType {
    filled = "filled",
    empty = "empty",
    transparent = "transparent"
}

export declare type BackgroundTypeValue = 'filled' | 'empty' | 'transparent';

export declare enum BackImageAlign {
    left = "left",
    center = "center",
    right = "right"
}

export declare type BackImageAlignValue = 'left' | 'center' | 'right';

export declare enum BackImageRepeat {
    repeat = "repeat",
    no_repeat = "no-repeat",
    cover = "cover",
    contain = "contain"
}

export declare type BackImageRepeatValue = 'repeat' | 'no-repeat' | 'cover' | 'contain';

export declare enum BackImageVerticalAlign {
    top = "top",
    center = "center",
    bottom = "bottom"
}

export declare type BackImageVerticalAlignValue = 'top' | 'center' | 'bottom';

export { CachingModule }

export { Cell }

export { CellData }

export { CellRecord }

export { ChartNS }

export { CheckByte }

export { ClassNames }

export { ColInfo }

export declare enum Color {
    primary = "primary",
    muted = "muted",
    info = "info",
    success = "success",
    danger = "danger",
    warning = "warning",
    custom1 = "custom1",
    custom2 = "custom2",
    custom3 = "custom3",
    custom4 = "custom4",
    custom5 = "custom5"
}

export declare const COLOR_SET_VALUES: readonly ["skyblue", "blue", "light_red", "red", "light_green", "green", "orange", "yellow", "purple", "brown", "black"];

export { Colors }

export { ColorSet }

export declare interface ComponentConfig {
    /**
     * Use npm vanillanote2. See vanillanote2's specification.
     * The component's style follows HisonConfig's componentStyle property, so there may be properties in vanillanote that are ignored.
     */
    note: VanillanoteConfig;
    /**
     * Use npm vanillagrid2. See vanillagrid's specification.
     * The component's style follows HisonConfig's componentStyle property, so there may be properties in vanillagrid that are ignored.
     */
    grid: VanillagridConfig;
    /**
     * Use npm chart.js. ^4.5.0.  See chartjs's specification.
     * chart.js default properties
     */
    chart: Defaults;
    /**
     * The maximum size of all uploaded files that the fileset component will have by default.
     */
    filesetTotalSize: number;
    /**
     * The maximum size per upload file that the fileset component will have by default.
     */
    filesetSize: number;
}

/**
 * Basic methods in all components
 */
export declare interface ComponentMethods {
    isHisonvueComponent: true;
    /**
     * Returns the unique ID of the component.
     * This is the same as the `id` prop (or auto-generated if not set).
     */
    getId(): string;
    /**
     * Returns the type of the component.
     */
    getType(): string;
    /**
     * Returns whether this component is currently visible.
     * - `false` means `display: none` is applied.
     */
    isVisible(): boolean;
    /**
     * Shows or hides this component.
     * - `true` makes this component visible.
     * - `false` applies `display: none`.
     */
    setVisible(visible: boolean): void;
    /**
     * Forces this component to re-render by unmounting and remounting internally.
     *
     * This is useful when you want to apply dynamic style or class changes
     * (such as responsive styles or visibility) that are not automatically reflected
     * through reactive props alone.
     */
    reload(): void;
}

export declare interface ComponentStyleConfig {
    size: Size.xs | Size.s | Size.m | Size.l | Size.xl;
    primaryColor: string;
    mutedColor: string;
    infoColor: string;
    successColor: string;
    dangerColor: string;
    warningColor: string;
    custom1Color: string;
    custom2Color: string;
    custom3Color: string;
    custom4Color: string;
    custom5Color: string;
    filledColor: string;
    emptyColor: string;
    filledTextColor: string;
    emptyTextColor: string;
    /** Whether to invert colors. Used in dark mode. */
    invertColor: boolean;
    /** The default height of an element when it is small. The unit is 'rem'. (default 1.4) */
    minHeightXS: number;
    /** The default height of an element when it is small. The unit is 'rem'. (default 1.7) */
    minHeightS: number;
    /** The default height of an element when it is medium. The unit is 'rem'. (default 1.95) */
    minHeightM: number;
    /** The default height of an element when it is large. The unit is 'rem'. (default 2.25) */
    minHeightL: number;
    /** The default height of an element when it is extra large. The unit is 'rem'. (default 2.55) */
    minHeightXL: number;
    /** The default font size of an element when it is small. The unit is 'rem'. (default 0.6) */
    fontSizeXS: number;
    /** The default font size of an element when it is small. The unit is 'rem'. (default 0.7) */
    fontSizeS: number;
    /** The default font size of an element when it is medium. The unit is 'rem'. (default 0.75) */
    fontSizeM: number;
    /** The default font size of an element when it is large. The unit is 'rem'. (default 0.85) */
    fontSizeL: number;
    /** The default font size of an element when it is extra large. The unit is 'rem'. (default 1) */
    fontSizeXL: number;
}

export { Consts }

export { CountDateType }

export { createHison }

export declare const CSS_VAR_RE: RegExp;

export { Csses }

export declare interface CssEvent {
    textbox_onBeforeFocus: (e: FocusEvent) => boolean;
    textbox_onAfterFocus: (e: FocusEvent) => void;
    textbox_onBeforeBlur: (e: FocusEvent) => boolean;
    textbox_onAfterBlur: (e: FocusEvent) => void;
    textbox_onBeforeClick: (e: MouseEvent) => boolean;
    textbox_onAfterClick: (e: MouseEvent) => void;
    textbox_onBeforeMouseover: (e: MouseEvent) => boolean;
    textbox_onAfterMouseover: (e: MouseEvent) => void;
    textbox_onBeforeMouseout: (e: MouseEvent) => boolean;
    textbox_onAfterMouseout: (e: MouseEvent) => void;
    textbox_onBeforeTouchstart: (e: TouchEvent) => boolean;
    textbox_onAfterTouchstart: (e: TouchEvent) => void;
    textbox_onBeforeTouchend: (e: TouchEvent) => boolean;
    textbox_onAfterTouchend: (e: TouchEvent) => void;
    button_onBeforeFocus: (e: FocusEvent) => boolean;
    button_onAfterFocus: (e: FocusEvent) => void;
    button_onBeforeBlur: (e: FocusEvent) => boolean;
    button_onAfterBlur: (e: FocusEvent) => void;
    button_onBeforeClick: (e: MouseEvent) => boolean;
    button_onAfterClick: (e: MouseEvent) => void;
    button_onBeforeMouseover: (e: MouseEvent) => boolean;
    button_onAfterMouseover: (e: MouseEvent) => void;
    button_onBeforeMouseout: (e: MouseEvent) => boolean;
    button_onAfterMouseout: (e: MouseEvent) => void;
    button_onBeforeTouchstart: (e: TouchEvent) => boolean;
    button_onAfterTouchstart: (e: TouchEvent) => void;
    button_onBeforeTouchend: (e: TouchEvent) => boolean;
    button_onAfterTouchend: (e: TouchEvent) => void;
    input_onBeforeFocus: (e: FocusEvent) => boolean;
    input_onAfterFocus: (e: FocusEvent) => void;
    input_onBeforeBlur: (e: FocusEvent) => boolean;
    input_onAfterBlur: (e: FocusEvent) => void;
    input_onBeforeMouseover: (e: MouseEvent) => boolean;
    input_onAfterMouseover: (e: MouseEvent) => void;
    input_onBeforeMouseout: (e: MouseEvent) => boolean;
    input_onAfterMouseout: (e: MouseEvent) => void;
    input_onBeforeTouchstart: (e: TouchEvent) => boolean;
    input_onAfterTouchstart: (e: TouchEvent) => void;
    input_onBeforeTouchend: (e: TouchEvent) => boolean;
    input_onAfterTouchend: (e: TouchEvent) => void;
}

export { Data }

export declare const DATA_STATUS_VALUES: readonly ["C", "R", "U", "D"];

declare interface DataConfig {
    /**
     * A function that allows customization of how specific objects are inserted into a `DataModel`.
     *
     * In `hisondev`, all values inserted into a `DataModel` are **copied** to maintain data integrity.
     * However, certain JavaScript objects, such as `Date`, require a more flexible way of handling
     * their copying process. Instead of manually defining conversion logic for every object type,
     * `convertValue` provides a way for developers to customize how specific objects are transformed
     * before being inserted into a `DataModel`.
     *
     * - By default, this function **returns the input value as is**.
     * - Developers can override this function to implement custom conversion logic.
     * - Used in `DataModel._deepCopy(object)`, where it is applied to non-plain objects.
     *
     * ### Usage in `DataModel`
     * When copying an object, if it is not a plain `Object` or `Array`, `convertValue` is called:
     * ```typescript
     * if (object.constructor !== Object && object.constructor !== Array) {
     *     const convertValue = customOption.data.convertValue(object);
     *     return convertValue !== undefined ? convertValue : object;
     * }
     * ```
     *
     * ### Example: Customizing `convertValue` to Handle `Date` Objects
     * ```typescript
     * hison.setConvertValue((value: any) => {
     *     return value instanceof Date ? value.getTime() : value;
     * });
     * ```
     *
     * - The above example ensures that when a `Date` object is inserted into `DataModel`,
     *   it is converted into a timestamp (`number`) instead of being copied as a reference.
     *
     * @param value The value to be processed before being inserted into `DataModel`.
     * @returns The customized or original value.
     */
    convertValue(value: any): any;
}

export { DataModel }

export { DataModelFillter }

export { DataModelFormatter }

export { DataModelValidator }

export declare enum DataStatus {
    R = "R",
    C = "C",
    U = "U",
    D = "D"
}

export declare type DataStatusValue = typeof DATA_STATUS_VALUES[number];

export { DataType }

export { DataWrapper }

export { DateFormat }

export { DateObject }

export { DateTimeFormat }

export { DateTimeObject }

export { DayFormat }

export declare enum DayOfWeek {
    sun = 0,
    mon = 1,
    tue = 2,
    wed = 3,
    thu = 4,
    fri = 5,
    sat = 6
}

export { DayOfWeekFormat }

export { DayOfWeekFullName }

export { DayOfWeekFullNameKR }

export { DayOfWeekShortName }

export { DayOfWeekShortNameKR }

export { DefaultColInfo }

export { DefaultGridCssInfo }

export { DefaultGridInfo }

export declare type DeviceType = 'mb' | 'tb' | 'pc' | 'wd';

export { documentEvent }

export { DocumentEvents }

declare type DrawerPos = 'top' | 'bottom' | 'left' | 'right';

declare type DrawerPosition = 'top' | 'bottom' | 'left' | 'right';

export declare const DROPDOWN_TRIGGER_VALUES: readonly ["click", "hover"];

export declare enum DropdownTrigger {
    click = "click",
    hover = "hover"
}

export declare type DropdownTriggerValue = typeof DROPDOWN_TRIGGER_VALUES[number];

export declare const EDIT_MODE_VALUES: readonly ["editable", "disable", "readonly"];

export declare enum EditMode {
    editable = "editable",
    disable = "disable",
    readonly = "readonly"
}

export declare type EditModeValue = typeof EDIT_MODE_VALUES[number];

export declare const getDefaultHisonConfig: () => HisonConfig;

export { getVanillagrid }

export { getVanillagridConfig }

export { getVanillanote }

export { getVanillanoteConfig }

export declare const GRID_ALIGN_VALUES: readonly ["left", "center", "right"];

export declare const GRID_DATE_FORMAT_VALUES: readonly ["yyyy-mm-dd", "yyyy/mm/dd", "yyyy. mm. dd", "yyyymmdd", "mm-dd-yyyy", "mm/dd/yyyy", "mm. dd. yyyy", "mmddyyyy", "dd-mm-yyyy", "dd/mm/yyyy", "dd. mm. yyyy", "ddmmyyyy"];

export declare const GRID_MONTH_FORMAT_VALUES: readonly ["yyyymm", "yyyy-mm", "yyyy/mm", "yyyy. mm", "mmyyyy", "mm-yyyy", "mm/yyyy", "mm. yyyy"];

export declare const GRID_VERTICAL_ALIGN_VALUES: readonly ["top", "center", "bottom"];

export { GridAlign }

export declare type GridAlignValue = typeof GRID_ALIGN_VALUES[number];

export { GridBasicDataType }

export { GridCssInfo }

export { GridDateFormat }

export declare type GridDateFormatValue = typeof GRID_DATE_FORMAT_VALUES[number];

export { GridInfo }

export { GridMethods }

export { GridMonthFormat }

export declare type GridMonthFormatValue = typeof GRID_MONTH_FORMAT_VALUES[number];

export { GridRowStatus }

export { GridVerticalAlign }

export declare type GridVerticalAlignValue = typeof GRID_VERTICAL_ALIGN_VALUES[number];

export declare const H_CALENDAR_TIME_FORMAT_VALUES: readonly ["H", "HH", "h", "hh", "m", "mm", "H:m", "H:mm", "HH:m", "HH:mm", "h:m", "h:mm", "hh:m", "hh:mm", "H{am}", "HH{am}", "h{am}", "hh{am}", "m{am}", "mm{am}", "H:m{am}", "H:mm{am}", "HH:m{am}", "HH:mm{am}", "h:m{am}", "h:mm{am}", "hh:m{am}", "hh:mm{am}"];

export declare const H_CALENDAR_VIEW_VALUES: readonly ["day", "week", "month", "year", "years"];

export declare const H_GAP_LINE_STYLE_VALUES: readonly ["solid", "dashed", "dotted", "double", "groove", "ridge", "inset", "outset"];

export declare const H_GAP_RULE_VALUES: readonly ["none", "horizontal", "vertical"];

export declare const HAccordion: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
headerStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
contentStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
defaultOpen: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
default: string;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: string;
validator: (v: any) => boolean;
};
animate: {
type: BooleanConstructor;
default: boolean;
};
duration: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
easing: {
type: StringConstructor;
default: string;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
headerRef: Ref<HTMLElement | null, HTMLElement | null>;
contentRef: Ref<HTMLElement | null, HTMLElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
headerStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
contentStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
defaultOpen: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
default: string;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: string;
validator: (v: any) => boolean;
};
animate: {
type: BooleanConstructor;
default: boolean;
};
duration: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
easing: {
type: StringConstructor;
default: string;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onToggle?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}> & {}>;
visibleClass: ComputedRef<"" | "hison-display-none">;
responsiveClassList: Ref<string[], string[]>;
isOpen: Ref<boolean, boolean>;
title: Ref<string, string>;
headerBoxStyle: ComputedRef<    {}>;
titleInlineStyle: ComputedRef<    {
textAlign: "left" | "center" | "right";
}>;
rootInlineStyle: ComputedRef<Record<string, string>>;
animate: Ref<boolean, boolean>;
tabIndex: Ref<number | null, number | null>;
onToggleClick: (e: MouseEvent | KeyboardEvent) => void;
open: (e?: Event | null) => void;
close: (e?: Event | null) => void;
toggle: (e?: Event | null) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "close" | "toggle" | "responsive-change" | "open")[], "mounted" | "close" | "toggle" | "responsive-change" | "open", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
headerStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
contentStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
defaultOpen: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
default: string;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: string;
validator: (v: any) => boolean;
};
animate: {
type: BooleanConstructor;
default: boolean;
};
duration: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
easing: {
type: StringConstructor;
default: string;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onToggle?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}>, {
title: string;
textAlign: "left" | "center" | "right" | TextAlign;
visible: boolean;
defaultOpen: boolean;
animate: boolean;
duration: number;
easing: string;
tabIndex: string | number | null;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HAccordionClientOnly: Component;

/**
 * Runtime control methods for `HAccordion` component.
 *
 * This interface defines methods accessible via `hison.component.getAccordion(id)`.
 * It allows you to programmatically open/close/toggle the accordion, update its title,
 * adjust header text alignment, and control expand/collapse animation behavior.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const acc = hison.component.getAccordion('filters');
 *
 * // Open/close programmatically
 * acc.open();
 * acc.close();
 *
 * // Update header title dynamically
 * acc.setTitle('Advanced Filters');
 *
 * // Adjust alignment at runtime
 * acc.setTextAlign('center');
 *
 * // Customize animation
 * acc.setDuration(800);
 * acc.setEasing('ease-in-out');
 *
 * // Move focus to the header (keyboard accessible)
 * acc.focus();
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - Accordions are **display/output-only**; no editMode or value binding is supported.
 * - Title slot (`#title`) visually overrides the `title` prop.
 *   When slot content is used, `setTitle()` still updates the internal state but will not affect the rendered header.
 * - Animation (`animate`, `duration`, `easing`) is applied per instance and reflected immediately.
 */
export declare interface HAccordionMethods extends ComponentMethods {
    /**
     * Returns the component type literal.
     */
    getType(): 'accordion';
    /**
     * Whether the accordion body is currently expanded.
     */
    isOpen(): boolean;
    /**
     * Expands the accordion body with animation (if enabled).
     */
    open(e?: Event | null): void;
    /**
     * Collapses the accordion body with animation (if enabled).
     */
    close(e?: Event | null): void;
    /**
     * Toggles the accordion body between expanded and collapsed.
     */
    toggle(e?: Event | null): void;
    /**
     * Returns the current header title (from `title` prop/state).
     */
    getTitle(): string;
    /**
     * Updates the header title text.
     * - ⚠️ If a `#title` slot is provided, this will not change the visible header.
     */
    setTitle(text: string): void;
    /**
     * Returns the current header text alignment.
     */
    getTextAlign(): 'left' | 'center' | 'right';
    /**
     * Sets the header text alignment.
     * - Accepted values: `'left' | 'center' | 'right'`
     */
    setTextAlign(v: 'left' | 'center' | 'right'): void;
    /**
     * Whether expand/collapse animation is enabled.
     */
    getAnimate(): boolean;
    /**
     * Enables/disables expand/collapse animation.
     */
    setAnimate(v: boolean): void;
    /**
     * Returns the current animation duration (in ms).
     */
    getDuration(): number;
    /**
     * Sets the animation duration (in ms).
     */
    setDuration(ms: number): void;
    /**
     * Returns the CSS timing function used for animation.
     */
    getEasing(): string;
    /**
     * Sets the CSS timing function for animation (e.g., `'ease'`, `'linear'`, `'cubic-bezier(...)'`).
     */
    setEasing(fn: string): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Moves focus to the accordion header (for accessibility/keyboard usage).
     */
    focus(): void;
}

export declare const HBaggie: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
baggieVisible: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
shape: {
type: PropType<"square" | "rounded" | "circle">;
default: string;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
buttonEnabled: {
type: BooleanConstructor;
default: boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
baggieVisible: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
shape: {
type: PropType<"square" | "rounded" | "circle">;
default: string;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
buttonEnabled: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
anchorRef: Ref<HTMLSpanElement | null, HTMLSpanElement | null>;
baggieRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
text: Ref<string, string>;
visibleClass: ComputedRef<"" | "hison-display-none">;
baggieVisibleClass: ComputedRef<"" | "hison-display-none">;
responsiveClassList: Ref<string[], string[]>;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
borderClass: ComputedRef<"" | "hison-border">;
shapeClass: ComputedRef<"hison-baggie-shape-circle" | "hison-baggie-shape-square" | "hison-baggie-shape-rounded">;
positionClass: ComputedRef<string>;
anchorStyle: ComputedRef<    {
zIndex: number;
}>;
badgeStyle: ComputedRef<    {
zIndex: number;
}>;
baggieMethods: ComputedRef<HBaggieMethods | {
getType: () => "baggie";
isVisible: () => boolean;
setVisible: (v: boolean) => void;
isBaggieVisible: () => boolean;
setBaggieVisible: (v: boolean) => void;
getZIndex: () => number;
setZIndex: (v: number) => void;
getPosition: () => ScreenPositionValue;
setPosition: (v: ScreenPosition | ScreenPositionValue) => void;
getText: () => string;
setText: (t: string) => void;
isBorder: () => boolean;
setBorder: (v: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (t: BackgroundType | BackgroundTypeValue) => void;
getShape: () => "square" | "rounded" | "circle";
setShape: (s: "square" | "rounded" | "circle") => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
isButtonEnabled: () => boolean;
setButtonEnabled: (v: boolean) => void;
reload: () => void;
isHisonvueComponent: true;
getId: () => string;
} | null>;
tabIndex: Ref<number | null, number | null>;
buttonEnabled: Ref<boolean, boolean>;
onClick: (e: MouseEvent) => void;
onKeyActivate: () => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
baggieVisible: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
shape: {
type: PropType<"square" | "rounded" | "circle">;
default: string;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
buttonEnabled: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
position: ScreenPositionValue | ScreenPosition;
zIndex: number;
visible: boolean;
tabIndex: string | number | null;
baggieVisible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
shape: "square" | "rounded" | "circle";
buttonEnabled: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HBaggieClientOnly: Component;

/**
 * Runtime control methods for `HBaggie` component.
 *
 * This interface defines programmatic access to a baggie’s visibility,
 * badge-only visibility, z-index layering, position, text content, shape,
 * background, border, tabindex, and interactive state.
 * You can retrieve an instance using `hison.component.getBaggie(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const baggie = hison.component.getBaggie('bag01');
 * baggie.setText('9+');
 * baggie.setPosition('bottom-left');
 * baggie.setButtonEnabled(true);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - The `visible` prop hides both the target and badge; `baggieVisible` hides **only the badge**.
 * - `zIndex` applies to the anchor; the badge itself is rendered at `zIndex + 1`.
 * - For custom content, the `#badge` slot overrides the `text` prop entirely.
 */
export declare interface HBaggieMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * Always `'baggie'`.
     */
    getType(): 'baggie';
    /**
     * Returns whether the entire baggie anchor (target + badge) is visible.
     */
    isVisible(): boolean;
    /**
     * Sets whether the entire baggie anchor (target + badge) is visible.
     */
    setVisible(v: boolean): void;
    /**
     * Returns whether the badge itself is visible.
     * (Target element stays visible regardless.)
     */
    isBaggieVisible(): boolean;
    /**
     * Sets whether the badge itself is visible.
     */
    setBaggieVisible(v: boolean): void;
    /**
     * Gets the current base z-index (applied to the anchor).
     * The badge uses `zIndex + 1`.
     */
    getZIndex(): number;
    /**
     * Sets the base z-index (applied to the anchor).
     * The badge will automatically render at `zIndex + 1`.
     */
    setZIndex(v: number): void;
    /**
     * Gets the current badge position relative to its target.
     */
    getPosition(): ScreenPositionValue;
    /**
     * Sets the badge position relative to its target.
     * Accepts any `ScreenPosition` value (e.g. `'top-right'`, `'bottom-center'`).
     */
    setPosition(v: ScreenPosition | ScreenPositionValue): void;
    /**
     * Gets the current text content of the badge.
     * Returns empty string if no text is set.
     */
    getText(): string;
    /**
     * Sets the text content of the badge.
     * Ignored if slot `#badge` is used.
     */
    setText(t: string): void;
    /**
     * Returns whether the badge has border/shadow styling.
     */
    isBorder(): boolean;
    /**
     * Sets whether the badge shows border/shadow styling.
     */
    setBorder(v: boolean): void;
    /**
     * Gets the current background type of the badge.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the badge.
     * One of: `'empty' | 'transparent' | 'filled'`
     */
    setBackgroundType(t: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the shape of the badge.
     * One of: `'square' | 'rounded' | 'circle'`
     */
    getShape(): 'square' | 'rounded' | 'circle';
    /**
     * Sets the shape of the badge.
     */
    setShape(s: 'square' | 'rounded' | 'circle'): void;
    /**
     * Gets the tabindex value of the badge (or `null` if not focusable).
     */
    getTabIndex(): number | null;
    /**
     * Sets the tabindex value of the badge.
     * Use `null` to remove focusability.
     */
    setTabIndex(v: number | null): void;
    /**
     * Returns whether the badge is enabled for button-like interaction.
     */
    isButtonEnabled(): boolean;
    /**
     * Enables or disables button-like interaction styling/behavior.
     */
    setButtonEnabled(v: boolean): void;
    /**
     * Reloads the component instance (re-applies props and state).
     * Typically used internally for hot-reload or style updates.
     */
    reload(): void;
}

export declare const HBanner: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
initialIndex: {
type: NumberConstructor;
default: number;
};
transitionMs: {
type: NumberConstructor;
default: number;
};
navButtonStyle: {
type: PropType<"chevron" | "triangle">;
default: string;
validator: (v: any) => boolean;
};
showNavButtons: {
type: BooleanConstructor;
default: boolean;
};
showIndicators: {
type: BooleanConstructor;
default: boolean;
};
indicatorsPosition: {
type: PropType<"bottom" | "overlay">;
default: string;
validator: (v: any) => boolean;
};
indicatorClickable: {
type: BooleanConstructor;
default: boolean;
};
autoIntervalMs: {
type: NumberConstructor;
default: number;
};
autoDirection: {
type: PropType<"next" | "prev">;
default: string;
validator: (v: any) => boolean;
};
loop: {
type: BooleanConstructor;
default: boolean;
};
pauseOnHover: {
type: BooleanConstructor;
default: boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
initialIndex: {
type: NumberConstructor;
default: number;
};
transitionMs: {
type: NumberConstructor;
default: number;
};
navButtonStyle: {
type: PropType<"chevron" | "triangle">;
default: string;
validator: (v: any) => boolean;
};
showNavButtons: {
type: BooleanConstructor;
default: boolean;
};
showIndicators: {
type: BooleanConstructor;
default: boolean;
};
indicatorsPosition: {
type: PropType<"bottom" | "overlay">;
default: string;
validator: (v: any) => boolean;
};
indicatorClickable: {
type: BooleanConstructor;
default: boolean;
};
autoIntervalMs: {
type: NumberConstructor;
default: number;
};
autoDirection: {
type: PropType<"next" | "prev">;
default: string;
validator: (v: any) => boolean;
};
loop: {
type: BooleanConstructor;
default: boolean;
};
pauseOnHover: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onChange?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onNext?: ((...args: any[]) => any) | undefined;
onPrev?: ((...args: any[]) => any) | undefined;
"onAutoplay-start"?: ((...args: any[]) => any) | undefined;
"onAutoplay-stop"?: ((...args: any[]) => any) | undefined;
}> & {}>;
bannerMethods: ComputedRef<HBannerMethods | {
getType: () => "banner";
isVisible: () => boolean;
setVisible: (v: boolean) => void;
isBorder: () => boolean;
setBorder: (v: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (t: BackgroundType | BackgroundTypeValue) => void;
getCurrentIndex: () => number;
setCurrentIndex: (i: number) => void;
getInitialIndex: () => number;
setInitialIndex: (i: number) => void;
getSlideCount: () => number;
next: () => void;
prev: () => void;
goTo: (i: number) => void;
getNavButtonStyle: () => "chevron" | "triangle";
setNavButtonStyle: (s: "chevron" | "triangle") => void;
isShowNavButtons: () => boolean;
setShowNavButtons: (v: boolean) => void;
isShowIndicators: () => boolean;
setShowIndicators: (v: boolean) => void;
getIndicatorsPosition: () => "bottom" | "overlay";
setIndicatorsPosition: (p: "bottom" | "overlay") => void;
isIndicatorClickable: () => boolean;
setIndicatorClickable: (v: boolean) => void;
getAutoInterval: () => number;
setAutoInterval: (ms: number) => void;
getAutoDirection: () => "next" | "prev";
setAutoDirection: (d: "next" | "prev") => void;
isLoop: () => boolean;
setLoop: (v: boolean) => void;
isPauseOnHover: () => boolean;
setPauseOnHover: (v: boolean) => void;
startAuto: () => void;
stopAuto: () => void;
getTransitionMs: () => number;
setTransitionMs: (ms: number) => void;
reload: () => void;
isHisonvueComponent: true;
getId: () => string;
} | null>;
visibleClass: ComputedRef<"" | "hison-display-none">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
responsiveClassList: Ref<string[], string[]>;
buttonClassList: ComputedRef<string[]>;
slideNodes: ComputedRef<VNode<RendererNode, RendererElement, {
[key: string]: any;
}>[]>;
slideCount: ComputedRef<number>;
currentIndex: Ref<number, number>;
navButtonStyle: Ref<"chevron" | "triangle", "chevron" | "triangle">;
showNavButtons: Ref<boolean, boolean>;
showIndicators: Ref<boolean, boolean>;
indicatorsPositionClass: ComputedRef<"hison-banner-indicators-overlay" | "hison-banner-indicators-bottom">;
indicatorClickable: Ref<boolean, boolean>;
isPrevDisabled: ComputedRef<boolean>;
isNextDisabled: ComputedRef<boolean>;
trackStyle: ComputedRef<CSSProperties>;
trackRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
goPrev: () => void;
goNext: () => void;
goTo: (idx: number) => void;
onMouseEnter: () => void;
onMouseLeave: () => void;
onTouchStart: (e: TouchEvent) => void;
onTouchMove: (e: TouchEvent) => void;
onTouchEnd: () => void;
onTouchCancel: () => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("next" | "prev" | "mounted" | "change" | "responsive-change" | "autoplay-start" | "autoplay-stop")[], "next" | "prev" | "mounted" | "change" | "responsive-change" | "autoplay-start" | "autoplay-stop", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
initialIndex: {
type: NumberConstructor;
default: number;
};
transitionMs: {
type: NumberConstructor;
default: number;
};
navButtonStyle: {
type: PropType<"chevron" | "triangle">;
default: string;
validator: (v: any) => boolean;
};
showNavButtons: {
type: BooleanConstructor;
default: boolean;
};
showIndicators: {
type: BooleanConstructor;
default: boolean;
};
indicatorsPosition: {
type: PropType<"bottom" | "overlay">;
default: string;
validator: (v: any) => boolean;
};
indicatorClickable: {
type: BooleanConstructor;
default: boolean;
};
autoIntervalMs: {
type: NumberConstructor;
default: number;
};
autoDirection: {
type: PropType<"next" | "prev">;
default: string;
validator: (v: any) => boolean;
};
loop: {
type: BooleanConstructor;
default: boolean;
};
pauseOnHover: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onChange?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onNext?: ((...args: any[]) => any) | undefined;
onPrev?: ((...args: any[]) => any) | undefined;
"onAutoplay-start"?: ((...args: any[]) => any) | undefined;
"onAutoplay-stop"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
visible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
initialIndex: number;
transitionMs: number;
navButtonStyle: "chevron" | "triangle";
showNavButtons: boolean;
showIndicators: boolean;
indicatorsPosition: "bottom" | "overlay";
indicatorClickable: boolean;
autoIntervalMs: number;
autoDirection: "next" | "prev";
loop: boolean;
pauseOnHover: boolean;
}, {}, {
HButton: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
buttonRef: Ref<HTMLButtonElement | null, HTMLButtonElement | null>;
buttonMethods: ComputedRef<HButtonMethods | {
getType: () => "button";
getText: () => string;
getTitle: () => string;
isDisable: () => boolean;
setText: (text: string) => void;
setTitle: (title: string) => void;
setDisable: (disable: boolean) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (type: BackgroundType | BackgroundTypeValue) => void;
unlock: () => void;
getClickInterval: () => number;
setClickInterval: (ms: number) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
visibleClass: ComputedRef<"" | "hison-display-none">;
disable: Ref<boolean, boolean>;
disableClass: ComputedRef<"" | "hison-disable">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
title: Ref<string, string>;
responsiveClassList: Ref<string[], string[]>;
hasLabelSlot: ComputedRef<boolean>;
computedAriaLabel: ComputedRef<string | undefined>;
internalText: Ref<string, string>;
tabIndex: Ref<number | null, number | null>;
onClick: (e: MouseEvent) => Promise<void>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
disable: boolean;
border: boolean;
visible: boolean;
tabIndex: string | number | null;
backgroundType: BackgroundTypeValue | BackgroundType;
clickInterval: number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HBannerClientOnly: Component;

/**
 * Runtime control methods for `HBanner` component.
 *
 * This interface defines programmatic access to a banner’s visibility,
 * frame styling (background/border), slide index navigation, navigation UI
 * (prev/next buttons, indicators, indicators’ position), autoplay behavior,
 * and transition timing. You can retrieve an instance using
 * `hison.component.getBanner(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const banner = hison.component.getBanner('bn1');
 * banner.next();
 * banner.setAutoInterval(3000);
 * banner.startAuto();
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `initialIndex` is applied on mount; calling `setInitialIndex()` will navigate immediately.
 * - When `loop` is `false`, navigation at the first/last slide is disabled and buttons may be disabled.
 * - Setting `autoInterval` to a value < 100 disables autoplay.
 * - If `pauseOnHover` is `true`, hovering the banner pauses autoplay.
 * - `indicatorClickable = false` renders dots as non-interactive.
 * - `indicatorsPosition: 'overlay'` draws dots inside the banner near the bottom edge; `'bottom'` places them below.
 */
export declare interface HBannerMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * Always `'banner'`.
     */
    getType(): 'banner';
    /**
     * Returns whether the entire banner frame is visible.
     */
    isVisible(): boolean;
    /**
     * Sets whether the entire banner frame is visible.
     */
    setVisible(v: boolean): void;
    /**
     * Returns whether the banner shows border/shadow styling.
     */
    isBorder(): boolean;
    /**
     * Sets whether the banner shows border/shadow styling.
     */
    setBorder(v: boolean): void;
    /**
     * Gets the current background type of the banner.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the banner.
     * One of: `'empty' | 'transparent' | 'filled'`
     */
    setBackgroundType(t: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the current zero-based slide index.
     */
    getCurrentIndex(): number;
    /**
     * Navigates to the given zero-based slide index.
     * Clamped to bounds; when `loop` is true, wraps around.
     */
    setCurrentIndex(i: number): void;
    /**
     * Gets the initial zero-based slide index used on mount.
     */
    getInitialIndex(): number;
    /**
     * Sets the initial slide index and navigates immediately.
     */
    setInitialIndex(i: number): void;
    /**
     * Returns the total number of slides (default slot children).
     */
    getSlideCount(): number;
    /**
     * Navigates to the next slide (respecting `loop`).
     */
    next(): void;
    /**
     * Navigates to the previous slide (respecting `loop`).
     */
    prev(): void;
    /**
     * Navigates to the specified zero-based slide index.
     */
    goTo(i: number): void;
    /**
     * Gets the current navigation button style.
     * One of: `'chevron' | 'triangle'`
     */
    getNavButtonStyle(): 'chevron' | 'triangle';
    /**
     * Sets the navigation button style.
     */
    setNavButtonStyle(s: 'chevron' | 'triangle'): void;
    /**
     * Returns whether prev/next navigation buttons are shown.
     */
    isShowNavButtons(): boolean;
    /**
     * Sets whether prev/next navigation buttons are shown.
     */
    setShowNavButtons(v: boolean): void;
    /**
     * Returns whether page indicators (dots) are shown.
     */
    isShowIndicators(): boolean;
    /**
     * Sets whether page indicators (dots) are shown.
     */
    setShowIndicators(v: boolean): void;
    /**
     * Gets the indicators’ position.
     * One of: `'bottom' | 'overlay'`
     */
    getIndicatorsPosition(): 'bottom' | 'overlay';
    /**
     * Sets the indicators’ position.
     */
    setIndicatorsPosition(p: 'bottom' | 'overlay'): void;
    /**
     * Returns whether page indicators are clickable.
     */
    isIndicatorClickable(): boolean;
    /**
     * Sets whether page indicators are clickable.
     */
    setIndicatorClickable(v: boolean): void;
    /**
     * Gets the autoplay interval in milliseconds.
     * Values < 100 disable autoplay.
     */
    getAutoInterval(): number;
    /**
     * Sets the autoplay interval in milliseconds.
     * If autoplay is running, the timer is restarted.
     */
    setAutoInterval(ms: number): void;
    /**
     * Gets the autoplay direction.
     * One of: `'next' | 'prev'`
     */
    getAutoDirection(): 'next' | 'prev';
    /**
     * Sets the autoplay direction.
     */
    setAutoDirection(d: 'next' | 'prev'): void;
    /**
     * Returns whether edge navigation wraps around.
     */
    isLoop(): boolean;
    /**
     * Sets whether edge navigation wraps around.
     */
    setLoop(v: boolean): void;
    /**
     * Returns whether hovering the banner pauses autoplay.
     */
    isPauseOnHover(): boolean;
    /**
     * Sets whether hovering the banner pauses autoplay.
     */
    setPauseOnHover(v: boolean): void;
    /**
     * Starts autoplay (if interval ≥ 100 ms).
     */
    startAuto(): void;
    /**
     * Stops autoplay.
     */
    stopAuto(): void;
    /**
     * Gets the slide transition duration in milliseconds.
     */
    getTransitionMs(): number;
    /**
     * Sets the slide transition duration in milliseconds.
     */
    setTransitionMs(ms: number): void;
    /**
     * Reloads the component instance (re-applies props and state).
     * Typically used for hot-reload or style updates.
     */
    reload(): void;
}

export declare const HButton: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
buttonRef: Ref<HTMLButtonElement | null, HTMLButtonElement | null>;
buttonMethods: ComputedRef<HButtonMethods | {
getType: () => "button";
getText: () => string;
getTitle: () => string;
isDisable: () => boolean;
setText: (text: string) => void;
setTitle: (title: string) => void;
setDisable: (disable: boolean) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (type: BackgroundType | BackgroundTypeValue) => void;
unlock: () => void;
getClickInterval: () => number;
setClickInterval: (ms: number) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
visibleClass: ComputedRef<"" | "hison-display-none">;
disable: Ref<boolean, boolean>;
disableClass: ComputedRef<"" | "hison-disable">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
title: Ref<string, string>;
responsiveClassList: Ref<string[], string[]>;
hasLabelSlot: ComputedRef<boolean>;
computedAriaLabel: ComputedRef<string | undefined>;
internalText: Ref<string, string>;
tabIndex: Ref<number | null, number | null>;
onClick: (e: MouseEvent) => Promise<void>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
disable: boolean;
border: boolean;
visible: boolean;
tabIndex: string | number | null;
backgroundType: BackgroundTypeValue | BackgroundType;
clickInterval: number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HButtonClientOnly: Component;

/**
 * Runtime control methods for `HButton` component.
 *
 * This interface defines methods that can be accessed via `hison.component.getButton(id)`.
 * Use these methods to manipulate button state programmatically at runtime.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const btn = hison.component.getButton('btn01');
 * btn.setVisible(false);
 * btn.setDisable(true);
 * btn.setText('Loading...');
 * btn.setTitle('Please wait');
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `setText` and `getText` only work if the button **does not use a slot**.
 * - All changes are reactive and immediately reflected in the DOM.
 */
export declare interface HButtonMethods extends ComponentMethods {
    /**
     * Returns the type of the button.
     */
    getType(): 'button';
    /**
     * Gets the current button text.
     * - Returns `''` if the button uses a `<slot>`.
     * - Returns the internally managed `text` otherwise.
     */
    getText(): string;
    /**
     * Gets the current tooltip (title) of the button.
     * - Reflects the current `title` attribute shown on hover.
     */
    getTitle(): string;
    /**
     * Returns whether the button is currently disabled.
     * - `true` means the button cannot be clicked.
     */
    isDisable(): boolean;
    /**
     * Sets the button text (only if no slot is used).
     * - If a slot is used, this has no effect.
     * - Updates internal reactive `text` state.
     */
    setText(text: string): void;
    /**
     * Sets the button tooltip (title) text.
     * - Affects what appears on hover.
     */
    setTitle(title: string): void;
    /**
     * Enables or disables the button.
     * - When disabled, button is grayed out and not clickable.
     */
    setDisable(disable: boolean): void;
    /**
     * Returns whether the current element displays a border.
     */
    isBorder(): boolean;
    /**
     * ESets whether the current element displays a border.
     *
     * @param border - `true` to display border, `false` to none display border
     */
    setBorder(border: boolean): void;
    /**
     * Gets the current background type of the button.
     * Returns 'filled', 'empty', or 'transparent' according to the applied style.
     * See BackgroundType enum for all possible values.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Changes the button's background type at runtime.
     * Accepts 'filled', 'empty', or 'transparent' (see BackgroundType).
     * Triggers re-render and updates the button's CSS class immediately.
     * @param type - New background type to apply.
     */
    setBackgroundType(type: BackgroundType | BackgroundTypeValue): void;
    /**
     * Unlocks the button, allowing it to be clicked again after a manual lock.
     *
     * This method is used to release the "pending" (locked) state of the button,
     * which is automatically enabled to prevent double submission while the `click` handler is running.
     *
     * - If your `@click` handler performs asynchronous logic (such as API requests or timeouts)
     *   and you want to allow another click only after a certain condition or callback, use this method.
     *
     * ---
     *
     * ### 🛠 Usage Example
     * ```vue
     * <HButton
     *   @click="async (e, btn) => {
     *     btn.setDisable(true)
     *     await apiRequest()
     *     btn.setDisable(false)
     *     btn.unlock() // unlocks the button for the next click
     *   }"
     * />
     *
     * <HButton
     *   @click="(e, btn) => {
     *     btn.setDisable(true)
     *     setTimeout(() => {
     *       btn.setDisable(false)
     *       btn.unlock() // unlocks after timeout
     *     }, 2000)
     *   }"
     * />
     * ```
     */
    unlock(): void;
    /**
     * Returns the current minimum interval (in milliseconds) required between button clicks.
     * - When set, the button cannot be clicked again until the specified time has passed since the last accepted click.
     *
     * @returns {number} The interval in milliseconds. `0` means no interval limit.
     *
     * ---
     *
     * ### 🛠 Usage Example
     * ```ts
     * const btn = hison.component.getButton('myBtn')
     * const interval = btn.getClickInterval()
     * // e.g., interval === 500 (for a 0.5s interval)
     * ```
     */
    getClickInterval(): number;
    /**
     * Sets the minimum interval (in milliseconds) between button clicks.
     * - When set, any clicks that occur before the interval has passed since the last click will be ignored.
     * - This is independent of the isPending (pending/locked) state.
     *
     * @param {number} ms - The interval in milliseconds (e.g., `500` for 0.5 seconds).
     *
     * ---
     *
     * ### 🛠 Usage Example
     * ```ts
     * const btn = hison.component.getButton('myBtn')
     * btn.setClickInterval(1500) // Now only one click is allowed every 1.5 seconds.
     * ```
     */
    setClickInterval(ms: number): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Focus on the button.
     */
    focus(): void;
}

export declare const HCalendar: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
selectedDate: {
type: PropType<string | Date>;
default: () => Date;
};
events: {
type: PropType<HCalendarEvent[]>;
default: () => never[];
};
weekendColor: {
type: StringConstructor;
required: boolean;
};
weekendDays: {
type: PropType<number[]>;
required: boolean;
validator: (arr: unknown) => boolean;
};
showTodayColor: {
type: BooleanConstructor;
default: boolean;
};
selectedColor: {
type: StringConstructor;
required: boolean;
};
specialTime: {
type: PropType<HCalendarSpecialTimeMap>;
required: boolean;
};
dateCellMinHeight: {
type: NumberConstructor;
required: boolean;
};
dateCellMaxHeight: {
type: NumberConstructor;
required: boolean;
};
disableDays: {
type: PropType<string[]>;
required: boolean;
default: undefined;
};
eventsOnMonthView: {
type: PropType<boolean | string>;
default: boolean;
};
hideWeekdays: {
type: PropType<number[]>;
required: boolean;
validator: (arr: unknown) => boolean;
};
hideWeekends: {
type: BooleanConstructor;
default: boolean;
};
locale: {
type: StringConstructor;
default: string;
};
maxDate: {
type: PropType<string | Date>;
required: boolean;
};
minDate: {
type: PropType<string | Date>;
required: boolean;
};
startWeekOnSunday: {
type: BooleanConstructor;
default: boolean;
};
time: {
type: BooleanConstructor;
default: boolean;
};
timeCellHeight: {
type: NumberConstructor;
required: boolean;
};
timeFormat: {
type: PropType<HCalendarTimeFormat | HCalendarTimeFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
timeFrom: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
timeStep: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
timeTo: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
hideTitleBar: {
type: BooleanConstructor;
default: boolean;
};
twelveHour: {
type: BooleanConstructor;
default: boolean;
};
activeView: {
type: PropType<HCalendarView | HCalendarViewValue>;
required: boolean;
validator: (v: any) => boolean;
};
disableViews: {
type: PropType<(HCalendarView | HCalendarViewValue)[]>;
required: boolean;
validator: (arr: any) => boolean;
};
}>, {
VueCal: DefineComponent<any, any, any>;
attrs: Attrs;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
selectedDate: {
type: PropType<string | Date>;
default: () => Date;
};
events: {
type: PropType<HCalendarEvent[]>;
default: () => never[];
};
weekendColor: {
type: StringConstructor;
required: boolean;
};
weekendDays: {
type: PropType<number[]>;
required: boolean;
validator: (arr: unknown) => boolean;
};
showTodayColor: {
type: BooleanConstructor;
default: boolean;
};
selectedColor: {
type: StringConstructor;
required: boolean;
};
specialTime: {
type: PropType<HCalendarSpecialTimeMap>;
required: boolean;
};
dateCellMinHeight: {
type: NumberConstructor;
required: boolean;
};
dateCellMaxHeight: {
type: NumberConstructor;
required: boolean;
};
disableDays: {
type: PropType<string[]>;
required: boolean;
default: undefined;
};
eventsOnMonthView: {
type: PropType<boolean | string>;
default: boolean;
};
hideWeekdays: {
type: PropType<number[]>;
required: boolean;
validator: (arr: unknown) => boolean;
};
hideWeekends: {
type: BooleanConstructor;
default: boolean;
};
locale: {
type: StringConstructor;
default: string;
};
maxDate: {
type: PropType<string | Date>;
required: boolean;
};
minDate: {
type: PropType<string | Date>;
required: boolean;
};
startWeekOnSunday: {
type: BooleanConstructor;
default: boolean;
};
time: {
type: BooleanConstructor;
default: boolean;
};
timeCellHeight: {
type: NumberConstructor;
required: boolean;
};
timeFormat: {
type: PropType<HCalendarTimeFormat | HCalendarTimeFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
timeFrom: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
timeStep: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
timeTo: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
hideTitleBar: {
type: BooleanConstructor;
default: boolean;
};
twelveHour: {
type: BooleanConstructor;
default: boolean;
};
activeView: {
type: PropType<HCalendarView | HCalendarViewValue>;
required: boolean;
validator: (v: any) => boolean;
};
disableViews: {
type: PropType<(HCalendarView | HCalendarViewValue)[]>;
required: boolean;
validator: (arr: any) => boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onCell-click"?: ((...args: any[]) => any) | undefined;
"onView-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
calendarRef: Ref<any, any>;
visibleClass: ComputedRef<"" | "hison-display-none">;
disableClass: ComputedRef<"" | "hison-disable-calendar">;
responsiveClassList: Ref<string[], string[]>;
slotNames: ComputedRef<string[]>;
selectedDate: Ref<Date, Date>;
events: Ref<    {
start: Date | string;
end: Date | string;
title?: string | undefined;
content?: string | undefined;
class?: string | undefined;
background?: boolean | undefined;
schedule?: number | undefined;
allDay?: boolean | undefined;
deletable?: boolean | undefined;
resizable?: boolean | undefined;
}[], HCalendarEvent[] | {
start: Date | string;
end: Date | string;
title?: string | undefined;
content?: string | undefined;
class?: string | undefined;
background?: boolean | undefined;
schedule?: number | undefined;
allDay?: boolean | undefined;
deletable?: boolean | undefined;
resizable?: boolean | undefined;
}[]>;
disableDays: Ref<string[] | undefined, string[] | undefined>;
eventsOnMonthView: Ref<string | boolean, string | boolean>;
hideWeekdays: Ref<number[] | undefined, number[] | undefined>;
hideWeekends: Ref<boolean, boolean>;
locale: Ref<string, string>;
maxDate: Ref<string | Date | undefined, string | Date | undefined>;
minDate: Ref<string | Date | undefined, string | Date | undefined>;
startWeekOnSunday: Ref<boolean, boolean>;
time: Ref<boolean, boolean>;
timeCellHeight: Ref<number | undefined, number | undefined>;
timeFormat: Ref<"m" | "H" | "HH" | "h" | "hh" | "mm" | "H:m" | "H:mm" | "HH:m" | "HH:mm" | "h:m" | "h:mm" | "hh:m" | "hh:mm" | "H{am}" | "HH{am}" | "h{am}" | "hh{am}" | "m{am}" | "mm{am}" | "H:m{am}" | "H:mm{am}" | "HH:m{am}" | "HH:mm{am}" | "h:m{am}" | "h:mm{am}" | "hh:m{am}" | "hh:mm{am}" | HCalendarTimeFormat | undefined, "m" | "H" | "HH" | "h" | "hh" | "mm" | "H:m" | "H:mm" | "HH:m" | "HH:mm" | "h:m" | "h:mm" | "hh:m" | "hh:mm" | "H{am}" | "HH{am}" | "h{am}" | "hh{am}" | "m{am}" | "mm{am}" | "H:m{am}" | "H:mm{am}" | "HH:m{am}" | "HH:mm{am}" | "h:m{am}" | "h:mm{am}" | "hh:m{am}" | "hh:mm{am}" | HCalendarTimeFormat | undefined>;
timeFrom: Ref<number | undefined, number | undefined>;
timeStep: Ref<number | undefined, number | undefined>;
timeTo: Ref<number | undefined, number | undefined>;
hideTitleBar: Ref<boolean, boolean>;
twelveHour: Ref<boolean, boolean>;
activeView: Ref<"month" | "day" | "week" | "year" | "years" | HCalendarView | undefined, "month" | "day" | "week" | "year" | "years" | HCalendarView | undefined>;
disableViews: Ref<("month" | "day" | "week" | "year" | "years" | HCalendarView)[] | undefined, ("month" | "day" | "week" | "year" | "years" | HCalendarView)[] | undefined>;
onViewChange: (event: any) => void;
onCellClick: (_date: any) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change" | "cell-click" | "view-change")[], "mounted" | "responsive-change" | "cell-click" | "view-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
selectedDate: {
type: PropType<string | Date>;
default: () => Date;
};
events: {
type: PropType<HCalendarEvent[]>;
default: () => never[];
};
weekendColor: {
type: StringConstructor;
required: boolean;
};
weekendDays: {
type: PropType<number[]>;
required: boolean;
validator: (arr: unknown) => boolean;
};
showTodayColor: {
type: BooleanConstructor;
default: boolean;
};
selectedColor: {
type: StringConstructor;
required: boolean;
};
specialTime: {
type: PropType<HCalendarSpecialTimeMap>;
required: boolean;
};
dateCellMinHeight: {
type: NumberConstructor;
required: boolean;
};
dateCellMaxHeight: {
type: NumberConstructor;
required: boolean;
};
disableDays: {
type: PropType<string[]>;
required: boolean;
default: undefined;
};
eventsOnMonthView: {
type: PropType<boolean | string>;
default: boolean;
};
hideWeekdays: {
type: PropType<number[]>;
required: boolean;
validator: (arr: unknown) => boolean;
};
hideWeekends: {
type: BooleanConstructor;
default: boolean;
};
locale: {
type: StringConstructor;
default: string;
};
maxDate: {
type: PropType<string | Date>;
required: boolean;
};
minDate: {
type: PropType<string | Date>;
required: boolean;
};
startWeekOnSunday: {
type: BooleanConstructor;
default: boolean;
};
time: {
type: BooleanConstructor;
default: boolean;
};
timeCellHeight: {
type: NumberConstructor;
required: boolean;
};
timeFormat: {
type: PropType<HCalendarTimeFormat | HCalendarTimeFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
timeFrom: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
timeStep: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
timeTo: {
type: NumberConstructor;
required: boolean;
validator: (n: any) => boolean;
};
hideTitleBar: {
type: BooleanConstructor;
default: boolean;
};
twelveHour: {
type: BooleanConstructor;
default: boolean;
};
activeView: {
type: PropType<HCalendarView | HCalendarViewValue>;
required: boolean;
validator: (v: any) => boolean;
};
disableViews: {
type: PropType<(HCalendarView | HCalendarViewValue)[]>;
required: boolean;
validator: (arr: any) => boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onCell-click"?: ((...args: any[]) => any) | undefined;
"onView-change"?: ((...args: any[]) => any) | undefined;
}>, {
time: boolean;
disable: boolean;
visible: boolean;
selectedDate: string | Date;
events: HCalendarEvent[];
showTodayColor: boolean;
disableDays: string[];
eventsOnMonthView: string | boolean;
hideWeekends: boolean;
locale: string;
startWeekOnSunday: boolean;
hideTitleBar: boolean;
twelveHour: boolean;
}, {}, {
VueCal: DefineComponent<any, any, any>;
}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HCalendarClientOnly: Component;

/**
 * Defines a calendar event shown on the calendar.
 *
 * Supports both formatted date strings (e.g., '2025-06-16 10:00')
 * and JavaScript `Date` objects for `start` and `end` fields.
 *
 * Optional fields can control how the event is rendered or interacted with.
 * These map directly to `vue-cal` behavior.
 *
 * @example
 * {
 *   start: '2025-07-01 09:00',
 *   end: '2025-07-01 10:30',
 *   title: 'Team Meeting',
 *   background: true,
 *   deletable: true,
 *   class: 'event-blue'
 * }
 */
export declare type HCalendarEvent = {
    start: Date | string;
    end: Date | string;
    title?: string;
    content?: string;
    class?: string;
    /**
     * If true, the event is treated as a background highlight.
     * Does not display as a block, but colors the background area.
     */
    background?: boolean;
    /**
     * Optional `vue-cal` property to group events or apply external schedule logic.
     */
    schedule?: number;
    /**
     * If true, the event spans the whole day without a specific time.
     */
    allDay?: boolean;
    /**
     * If true, the user can delete this event.
     */
    deletable?: boolean;
    /**
     * If true, the user cannot resize this event.
     */
    resizable?: boolean;
};

/**
 * Runtime control methods for `HCalendar` component.
 *
 * This interface defines the available methods on `HCalendar`,
 * accessible via `hison.component.getCalendar(id)`, to programmatically control
 * calendar state, selected date, events, and display configuration.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const calendar = hison.component.getCalendar('cal1');
 * calendar.setSelectedDate('2025-07-01');
 * calendar.setDisable(true);
 * calendar.setVisible(false);
 *
 * const events = calendar.getEvents();
 * calendar.setEvents([...events, { start: '2025-07-02 10:00', end: '2025-07-02 11:00', title: 'Meeting' }]);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - Each `HCalendar` instance is automatically registered by `id` via `hison.component.getCalendar(id)`.
 * - Style-related changes (e.g. `weekendColor`, `selectedColor`) are applied via dynamic CSS variables.
 * - Date/time options use minutes (0~1440) where applicable (e.g. `timeFrom`, `timeTo`).
 * - Some properties like view mode (`setActiveView`) or locale (`setLocale`) can be changed live without re-render.
 * - `HCalendar` supports both `v-model:selected-date` and `v-model:events`, but changes via method calls will override both.
 */
export declare interface HCalendarMethods extends ComponentMethods {
    /**
     * Returns the type identifier for the component.
     * Always returns `'calendar'`.
     */
    getType(): 'calendar';
    /**
     * Returns whether the calendar is currently disabled.
     * - `true` means the calendar cannot be clicked.
     */
    isDisable(): boolean;
    /**
     * Enables or disables the calendar.
     * - When disabled, calendar is grayed out and not clickable.
     * @param disable
     */
    setDisable(disable: boolean): void;
    /**
     * Returns the currently selected date.
     * @param getDateType If `true`, returns a `Date` object; otherwise returns a formatted string.
     * @param format Optional format string. Defaults to global hison datetime format.
     */
    getSelectedDate(getDateType?: boolean, format?: string): string | Date;
    /**
     * Sets the selected date in the calendar.
     * @param selectedDate A string or Date object.
     */
    setSelectedDate(selectedDate: string | Date): void;
    /**
     * Returns the array of events currently displayed in the calendar.
     */
    getEvents(): HCalendarEvent[];
    /**
     * Updates the calendar events array.
     * @param events List of events to set.
     */
    setEvents(events: HCalendarEvent[]): void;
    /**
     * Returns the map of special time highlights.
     */
    getSpecialTime(): HCalendarSpecialTimeMap;
    /**
     * Sets special time ranges for specific days of the week.
     * @param specialTimeMap Object mapping day index to time ranges.
     */
    setSpecialTime(specialTimeMap: HCalendarSpecialTimeMap): void;
    /**
     * Returns the background color for weekend header cells.
     */
    getWeekendColor(): string | undefined;
    /**
     * Sets the weekend header background color.
     * @param cssText CSS color value (e.g., `#ff0000`, `rgba(...)`).
     */
    setWeekendColor(cssText: string): void;
    /**
     * Returns which weekday indices are considered weekends.
     */
    getWeekendDays(): number[] | undefined;
    /**
     * Sets which weekday indices are treated as weekends.
     * @param weekendDays Array of day indices (0 = Sunday).
     */
    setWeekendDays(weekendDays: number[]): void;
    /**
     * Returns whether today is highlighted with background color.
     */
    isShowTodayColor(): boolean;
    /**
     * Enables or disables special background highlight for today's date.
     * @param showTodayColor Boolean
     */
    setShowTodayColor(showTodayColor: boolean): void;
    /**
     * Returns the background color for the selected date.
     */
    getSelectedColor(): string | undefined;
    /**
     * Sets the background color for the selected date cell.
     * @param cssText (e.g., '#ff0000' or 'rgba(255,0,0,0.2)')
     */
    setSelectedColor(cssText: string): void;
    /**
     * Returns the minimum height (in px) for date cells in month view.
     */
    getDateCellMinHeight(): number | undefined;
    /**
     * Sets the minimum height (in px) for date cells in month view.
     * @param minHeight number of px
     */
    setDateCellMinHeight(minHeight: number): void;
    /**
     * Returns the maximum height (in px) for date cells in month view.
     */
    getDateCellMaxHeight(): number | undefined;
    /**
     * Sets the maximum height (in px) for date cells in month view.
     * @param maxHeight number of px
     */
    setDateCellMaxHeight(maxHeight: number): void;
    /**
     * Returns the list of disabled dates.
     * - These are dates that users cannot select in the calendar.
     */
    getDisableDays(): string[] | undefined;
    /**
     * Sets the list of disabled dates.
     * @param disableDays array of string dates (e.g., ['2025-06-26', '2025-06-27'])
     */
    setDisableDays(disableDays: string[]): void;
    /**
     * Returns the current setting for month view event display.
     * - Can be `false`, `'short'`, or other strings for full event text.
     */
    getEventsOnMonthView(): string | boolean | undefined;
    /**
     * Sets how events are displayed in the month view.
     * @param eventsOnMonthView
     * - `false`: shows event count only
     * - `'short'`: shows only titles
     * - others: shows full event contents
     */
    setEventsOnMonthView(eventsOnMonthView: string | boolean): void;
    /**
     * Returns which weekdays are currently hidden.
     * - Array of weekday indexes: 0 = Sunday, 6 = Saturday
     */
    getHideWeekdays(): number[] | undefined;
    /**
     * Hides or shows specific weekdays.
     * @param hideWeekdays Array of weekday indexes to hide (e.g., [2,3] to hide Tue/Wed)
     */
    setHideWeekdays(hideWeekdays: number[]): void;
    /**
     * Returns whether weekends (Saturday and Sunday) are currently hidden.
     */
    getHideWeekends(): boolean;
    /**
     * Hides or shows weekends in the calendar.
     * @param hideWeekends
     */
    setHideWeekends(hideWeekends: boolean): void;
    /**
     * Returns the current locale (language code).
     * - Example: 'en', 'ko'
     */
    getLocale(): string;
    /**
     * Sets the calendar language (locale).
     * - Example: 'fr', 'zh-cn'
     * @param locale See vue-cal docs for full list of locales
     */
    setLocale(locale: string): void;
    /**
     * Returns the maximum selectable date.
     * @param getDateType If `true`, returns a Date object; otherwise returns a string.
     */
    getMaxDate(getDateType?: boolean): string | Date | undefined | null;
    /**
     * Sets the maximum date users can select.
     * @param maxDate A string or Date object.
     */
    setMaxDate(maxDate: string | Date): void;
    /**
     * Returns the minimum selectable date.
     * @param getDateType If `true`, returns a Date object; otherwise returns a string.
     */
    getMinDate(getDateType?: boolean): string | Date | undefined | null;
    /**
     * Sets the minimum date users can select.
     * @param minDate A string or Date object.
     */
    setMinDate(minDate: string | Date): void;
    /**
     * Returns whether the week starts on Sunday.
     * - `true`: Sunday, `false`: Monday
     */
    isStartWeekOnSunday(): boolean;
    /**
     * Sets the start day of the week.
     * @param startWeekOnSunday `true` for Sunday, `false` for Monday
     */
    setStartWeekOnSunday(startWeekOnSunday: boolean): void;
    /**
     * Returns whether time cells are currently shown in 'day' or 'week' views.
     * - Equivalent to the `time` prop.
     */
    isShowTimeCell(): boolean;
    /**
     * Enables or disables display of time cells.
     * @param showTimeCell `true` to show time column, `false` to hide
     */
    setShowTimeCell(showTimeCell: boolean): void;
    /**
     * Returns the height (in pixels) of each time cell.
     */
    getTimeCellHeight(): number | undefined;
    /**
     * Sets the height (in pixels) of each time cell.
     * @param timeCellHeight A positive number (e.g., `40`)
     */
    setTimeCellHeight(timeCellHeight: number): void;
    /**
     * Returns the current time format used in the time column.
     */
    getTimeFormat(): HCalendarTimeFormat | HCalendarTimeFormatValue | undefined;
    /**
     * Sets the time format used for displaying time cells.
     * @param timeFormat Format string from `HCalendarTimeFormat` enum
     */
    setTimeFormat(timeFormat: HCalendarTimeFormat): void;
    /**
     * Returns the start time of the time axis (in minutes).
     */
    getTimeFrom(): number | undefined;
    /**
     * Sets the start time of the time axis (in minutes).
     * @param timeFrom A number between 0 and 1440 (e.g., `9 * 60` = 9:00 AM)
     */
    setTimeFrom(timeFrom: number): void;
    /**
     * Returns the time step between time cells (in minutes).
     */
    getTimeStep(): number | undefined;
    /**
     * Sets the time step interval for time cells.
     * @param timeStep A number between 1 and 60 (e.g., `30` for half-hour blocks)
     */
    setTimeStep(timeStep: number): void;
    /**
     * Returns the end time of the time axis (in minutes).
     */
    getTimeTo(): number | undefined;
    /**
     * Sets the end time of the time axis (in minutes).
     * @param timeTo A number between 0 and 1440 (e.g., `18 * 60` = 6:00 PM)
     */
    setTimeTo(timeTo: number): void;
    /**
     * Returns whether the title bar (month/year label & arrows) is hidden.
     */
    isHideTitleBar(): boolean;
    /**
     * Shows or hides the title bar at the top of the calendar.
     * @param hideTitleBar `true` to hide, `false` to show
     */
    setHideTitleBar(hideTitleBar: boolean): void;
    /**
     * Returns whether the calendar is using 12-hour AM/PM format.
     */
    isTwelveHour(): boolean;
    /**
     * Enables or disables 12-hour format display.
     * @param twelveHour `true` for AM/PM display, `false` for 24-hour
     */
    setTwelveHour(twelveHour: boolean): void;
    /**
     * Returns the currently active view mode.
     * - One of `'day'`, `'week'`, `'month'`, `'year'`, `'years'`
     */
    getActiveView(): HCalendarViewValue;
    /**
     * Changes the active calendar view.
     * @param view New view mode from `HCalendarView` enum
     */
    setActiveView(view: HCalendarView | HCalendarViewValue): void;
    /**
     * Returns the list of views that are currently disabled.
     */
    getDisableViews(): HCalendarView[] | HCalendarViewValue[] | undefined;
    /**
     * Disables specific view modes to restrict user navigation.
     * @param disableViews Array of view modes to disable
     */
    setDisableViews(disableViews: HCalendarView[]): void;
}

/**
 * Defines a special time block on a specific day.
 * This can be used to highlight time ranges (e.g., lunch breaks, maintenance periods)
 * with a custom background color or class.
 *
 * - Time units are in **minutes** from midnight (0–1440).
 * - Use `className` to apply specific CSS styling to that time range.
 *
 * @example
 * {
 *   from: 12 * 60,     // 12:00 PM
 *   to: 13 * 60,       // 1:00 PM
 *   className: 'lunch-time'
 * }
 */
export declare type HCalendarSpecialTime = {
    from: number;
    to: number;
    className?: string;
};

/**
 * Maps days of the week to arrays of special time blocks.
 * Allows you to specify custom time ranges (with styles) for each day.
 *
 * - Keys are 0 (Sunday) through 6 (Saturday).
 * - Values are arrays of `HCalendarSpecialTime` entries.
 *
 * @example
 * {
 *   1: [ { from: 720, to: 780, className: 'meeting-block' } ],  // Monday 12:00–13:00
 *   5: [ { from: 1080, to: 1140 } ]                             // Friday 18:00–19:00
 * }
 */
export declare type HCalendarSpecialTimeMap = {
    [key in DayOfWeek]?: HCalendarSpecialTime[];
};

export declare enum HCalendarTimeFormat {
    'h24' = "H",
    'hh24' = "HH",
    'h' = "h",
    'hh' = "hh",
    'm' = "m",
    'mm' = "mm",
    'h24:m' = "H:m",
    'h24:mm' = "H:mm",
    'hh24:m' = "HH:m",
    'hh24:mm' = "HH:mm",
    'h:m' = "h:m",
    'h:mm' = "h:mm",
    'hh:m' = "hh:m",
    'hh:mm' = "hh:mm",
    'h24{am}' = "H{am}",
    'hh24{am}' = "HH{am}",
    'h{am}' = "h{am}",
    'hh{am}' = "hh{am}",
    'm{am}' = "m{am}",
    'mm{am}' = "mm{am}",
    'h24:m{am}' = "H:m{am}",
    'h24:mm{am}' = "H:mm{am}",
    'hh24:m{am}' = "HH:m{am}",
    'hh24:mm{am}' = "HH:mm{am}",
    'h:m{am}' = "h:m{am}",
    'h:mm{am}' = "h:mm{am}",
    'hh:m{am}' = "hh:m{am}",
    'hh:mm{am}' = "hh:mm{am}"
}

export declare type HCalendarTimeFormatValue = typeof H_CALENDAR_TIME_FORMAT_VALUES[number];

export declare enum HCalendarView {
    day = "day",
    week = "week",
    month = "month",
    year = "year",
    years = "years"
}

export declare type HCalendarViewValue = typeof H_CALENDAR_VIEW_VALUES[number];

export declare const HCaption: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
level: {
type: PropType<1 | 2 | 3 | 4 | 5 | 6 | number>;
default: number;
validator: (v: any) => boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
}>, {
captionRef: Ref<HTMLElement | null, HTMLElement | null>;
captionMethods: ComputedRef<HCaptionMethods | {
getType: () => "caption";
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
getTitle: () => string;
setTitle: (title: string) => void;
getText: () => string;
setText: (text: string) => void;
getLevel: () => number;
setLevel: (level: number) => void;
getTextAlign: () => TextAlignValue;
setTextAlign: (textAlign: TextAlign | TextAlignValue) => void;
isFontBold: () => boolean;
setFontBold: (bold: boolean) => void;
isFontItalic: () => boolean;
setFontItalic: (italic: boolean) => void;
isFontThruline: () => boolean;
setFontThruline: (thruline: boolean) => void;
isFontUnderline: () => boolean;
setFontUnderline: (underline: boolean) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (type: BackgroundType | BackgroundTypeValue) => void;
isHisonvueComponent: true;
getId: () => string;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
level: {
type: PropType<1 | 2 | 3 | 4 | 5 | 6 | number>;
default: number;
validator: (v: any) => boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
visibleClass: ComputedRef<"" | "hison-display-none">;
fontBoldClass: ComputedRef<"hison-font-bold-important" | null>;
fontItalicClass: ComputedRef<"hison-font-italic" | null>;
fontThrulineClass: ComputedRef<"hison-font-thruline" | null>;
fontUnderlineClass: ComputedRef<"hison-font-underline" | null>;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
textAlignStyle: ComputedRef<    {
textAlign: "left" | "center" | "right";
}>;
renderTag: ComputedRef<"h1" | "h2" | "h3" | "h4" | "h5" | "h6">;
hasElementSlot: ComputedRef<boolean>;
internalText: Ref<string, string>;
responsiveClassList: Ref<string[], string[]>;
onClick: (e: MouseEvent) => void;
title: Ref<string, string>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
level: {
type: PropType<1 | 2 | 3 | 4 | 5 | 6 | number>;
default: number;
validator: (v: any) => boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
textAlign: "left" | "center" | "right" | TextAlign;
fontBold: boolean;
fontItalic: boolean;
fontThruline: boolean;
fontUnderline: boolean;
visible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
level: number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HCaptionClientOnly: Component;

/**
 * Runtime control methods for `HCaption` component.
 *
 * This interface defines methods that can be accessed via `hison.component.getCaption(id)`.
 * Use these methods to manipulate caption (heading) state programmatically at runtime.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const cp = hison.component.getCaption('title01');
 * cp.setLevel(2);                 // <h2>
 * cp.setText('Section Title');    // when not rendering an element-slot
 * cp.setTextAlign('center');
 * cp.setFontBold(true);
 * cp.setBorder(true);
 * cp.setBackgroundType('transparent');
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - If the default slot contains **any element vnode**, `getText()` returns `''` and `setText()` has no effect.
 *   - If the default slot is **pure text nodes**, that text is absorbed and becomes controllable by `getText/setText`.
 * - Changes are reactive and reflected immediately in the DOM.
 * - Heading level is constrained to **1 ~ 6** and maps to actual `<h1> ~ <h6>` tags at render time.
 */
export declare interface HCaptionMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * - Always `'caption'` for this component.
     */
    getType(): 'caption';
    /**
     * Returns whether the caption is visible.
     * - `true`: rendered normally.
     * - `false`: hidden via `hison-display-none` on wrapper.
     */
    isVisible(): boolean;
    /**
     * Sets caption visibility.
     * @param visible - `true` to show, `false` to hide.
     */
    setVisible(visible: boolean): void;
    /**
     * Gets the current tooltip (title attribute) text shown on hover.
     */
    getTitle(): string;
    /**
     * Sets the tooltip (title attribute) text shown on hover.
     * @param title - Tooltip text.
     */
    setTitle(title: string): void;
    /**
     * Gets the caption text when controllable:
     * - Returns `''` if the default slot renders **any element vnode**.
     * - Otherwise, returns the internally managed text (including text-only slot absorption).
     */
    getText(): string;
    /**
     * Sets the caption text when controllable:
     * - No effect if the default slot renders **any element vnode**.
     * - Updates internal reactive text rendered inside the heading element.
     * @param text - New caption text.
     */
    setText(text: string): void;
    /**
     * Gets the current heading level (1~6).
     * - Maps to `<h1>` ~ `<h6>` at render time.
     */
    getLevel(): number;
    /**
     * Sets the heading level.
     * - Values outside 1~6 are clamped to the nearest bound.
     * @param level - Target heading level (1~6).
     */
    setLevel(level: number): void;
    /**
     * Gets current text alignment (`'left' | 'center' | 'right'`).
     */
    getTextAlign(): TextAlignValue;
    /**
     * Sets text alignment.
     * - Accepts enum `TextAlign` or its string literal values.
     * @param textAlign - `'left' | 'center' | 'right'`.
     */
    setTextAlign(textAlign: TextAlign | TextAlignValue): void;
    /**
     * Returns whether bold style is applied.
     */
    isFontBold(): boolean;
    /**
     * Applies or removes bold style.
     * @param bold - `true` to apply, `false` to remove.
     */
    setFontBold(bold: boolean): void;
    /**
     * Returns whether italic style is applied.
     */
    isFontItalic(): boolean;
    /**
     * Applies or removes italic style.
     * @param italic - `true` to apply, `false` to remove.
     */
    setFontItalic(italic: boolean): void;
    /**
     * Returns whether strikethrough is applied.
     */
    isFontThruline(): boolean;
    /**
     * Applies or removes strikethrough style.
     * @param thruline - `true` to apply, `false` to remove.
     */
    setFontThruline(thruline: boolean): void;
    /**
     * Returns whether underline is applied.
     */
    isFontUnderline(): boolean;
    /**
     * Applies or removes underline style.
     * @param underline - `true` to apply, `false` to remove.
     */
    setFontUnderline(underline: boolean): void;
    /**
     * Returns whether the caption shows border (box-shadow).
     */
    isBorder(): boolean;
    /**
     * Sets whether border (box-shadow) is shown.
     * @param border - `true` to show, `false` to hide.
     */
    setBorder(border: boolean): void;
    /**
     * Gets current background type of the caption.
     * - One of `'filled' | 'empty' | 'transparent'`.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets background type of the caption.
     * - Accepts `'filled' | 'empty' | 'transparent'` (see `BackgroundType` enum).
     * @param type - New background type to apply.
     */
    setBackgroundType(type: BackgroundType | BackgroundTypeValue): void;
}

export declare const HChart: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
type: {
type: PropType<ChartType>;
required: boolean;
};
modelValue: {
type: PropType<ChartData>;
required: boolean;
};
options: {
type: PropType<ChartOptions>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
loadDelay: {
type: NumberConstructor;
default: number;
};
}>, {
canvasRef: Ref<HTMLCanvasElement | null, HTMLCanvasElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
type: {
type: PropType<ChartType>;
required: boolean;
};
modelValue: {
type: PropType<ChartData>;
required: boolean;
};
options: {
type: PropType<ChartOptions>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
loadDelay: {
type: NumberConstructor;
default: number;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}> & {}>;
attrs: Attrs;
visibleClass: ComputedRef<"" | "hison-display-none">;
responsiveClassList: Ref<string[], string[]>;
isPending: Ref<boolean, boolean>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change" | "update:modelValue")[], "mounted" | "responsive-change" | "update:modelValue", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
type: {
type: PropType<ChartType>;
required: boolean;
};
modelValue: {
type: PropType<ChartData>;
required: boolean;
};
options: {
type: PropType<ChartOptions>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
loadDelay: {
type: NumberConstructor;
default: number;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
visible: boolean;
loadDelay: number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HChartClientOnly: Component;

/**
 * Runtime control interface for the `HChart` component.
 *
 * This interface is returned by `hison.component.getChart(id)` and allows full programmatic control of the chart.
 *
 * ---
 *
 * ### 📊 Example Usage
 * ```ts
 * const chart = hison.component.getChart('salesChart')
 * if (chart) {
 *   chart.setVisible(true)
 *   chart.data.labels = ['Jan', 'Feb', 'Mar']
 *   chart.data.datasets[0].data = [10, 20, 30]
 *   chart.update()
 * }
 * ```
 *
 * ---
 *
 * ### ⚙️ Chart.js Integration
 * - `HChartInstance` extends [`Chart`](https://www.chartjs.org/docs/latest/api/chart) from Chart.js.
 * - This means **you can directly use all Chart.js instance methods**, such as:
 *   - `.update()`
 *   - `.resize()`
 *   - `.destroy()`
 *   - `.reset()`
 *   - `.render()`
 *   - `.stop()`
 *   - `.toBase64Image()`
 *   - `.getElementsAtEventForMode()`
 * - You also have full access to mutable properties like:
 *   - `chart.data`
 *   - `chart.options`
 *   - `chart.canvas`
 *   - `chart.config`
 *   - `chart.scales`, etc.
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `getChartInstance()` is no longer needed; the entire Chart instance is exposed directly.
 * - `setData()` and `setOptions()` helpers are unnecessary—just mutate `data` or `options` and call `.update()`.
 */
export declare interface HChartInstance extends ComponentMethods, Chart {
    /**
     * Returns the type identifier.
     * Always returns `'chart'`.
     */
    getType(): 'chart';
    /**
     * Get the current reload delay (ms) used for re-creating the chart after unmount.
     *
     * @returns {number} The delay in milliseconds.
     *
     * @example
     * const chart = hison.component.getChart('chart1');
     * const delay = chart.getLoadDelay();
     * console.log('Current delay:', delay);
     */
    getLoadDelay(): number;
    /**
     * Set the reload delay (ms) to wait before re-creating the chart after unmount.
     * Useful for adjusting the debounce period for rapid reloads.
     *
     * @param {number} ms - The delay in milliseconds to use for subsequent reloads.
     *
     * @example
     * const chart = hison.component.getChart('chart1');
     * chart.setLoadDelay(1000); // Sets delay to 1 second for reloads
     */
    setLoadDelay(ms: number): void;
}

export declare const HDrawer: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<DrawerPosition>;
default: string;
validator: (v: any) => boolean;
};
width: {
type: PropType<number | null>;
default: null;
};
height: {
type: PropType<number | null>;
default: null;
};
closeButtonVisible: {
type: BooleanConstructor;
default: boolean;
};
closeButtonText: {
type: StringConstructor;
default: string;
};
closeButtonTitle: {
type: StringConstructor;
default: string;
};
swipeClose: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<DrawerPosition>;
default: string;
validator: (v: any) => boolean;
};
width: {
type: PropType<number | null>;
default: null;
};
height: {
type: PropType<number | null>;
default: null;
};
closeButtonVisible: {
type: BooleanConstructor;
default: boolean;
};
closeButtonText: {
type: StringConstructor;
default: string;
};
closeButtonTitle: {
type: StringConstructor;
default: string;
};
swipeClose: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}> & {}>;
wrapperRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
drawerRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
position: Ref<DrawerPos, DrawerPos>;
visibleClass: ComputedRef<"" | "hison-display-none">;
responsiveClassList: Ref<string[], string[]>;
childClassList: ComputedRef<string[]>;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<string>;
wrapperStyle: ComputedRef<Record<string, string | number>>;
overlayStyleWithZ: ComputedRef<any>;
isOverlayVisible: ComputedRef<boolean>;
sizeStyle: ComputedRef<Record<string, string>>;
closeButtonVisible: Ref<boolean, boolean>;
closeButtonBorder: ComputedRef<boolean>;
closeButtonBackgroundType: ComputedRef<any>;
closeButtonText: Ref<string, string>;
closeButtonTitle: Ref<string, string>;
onOverlayClick: () => void;
onClickClose: () => Promise<void>;
onSwipePointerDown: (e: PointerEvent) => void;
drawerMethods: ComputedRef<HDrawerMethods | {
getType: () => "drawer";
isVisible: () => boolean;
setVisible: (v: boolean) => void | Promise<void>;
isOpen: () => boolean;
open: () => void | Promise<void>;
close: () => void | Promise<void>;
toggle: () => void | Promise<void>;
getZIndex: () => number;
setZIndex: (v: number) => void;
getPosition: () => "top" | "bottom" | "left" | "right";
setPosition: (p: "top" | "bottom" | "left" | "right") => void;
getWidth: () => number | null;
setWidth: (v: number | null, animate: boolean) => Promise<void> | void;
getHeight: () => number | null;
setHeight: (v: number | null, animate: boolean) => Promise<void> | void;
isSwipeCloseEnabled: () => boolean;
setSwipeCloseEnabled: (v: boolean) => void;
isCloseButtonVisible: () => boolean;
setCloseButtonVisible: (v: boolean) => void;
isOverlayShown: () => boolean;
setOverlayShown: (v: boolean) => void;
isCloseClickOverlay: () => boolean;
setCloseClickOverlay: (v: boolean) => void;
isScrollLocked: () => boolean;
setScrollLock: (v: boolean) => void;
isBorder: () => boolean;
setBorder: (v: boolean) => void;
getAnimationClasses: () => {
enter: string;
leave: string;
};
setAnimationClasses: (opt: Partial<{
enter: string;
leave: string;
}>) => void;
reload: () => void;
isHisonvueComponent: true;
getId: () => string;
} | null>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "close" | "responsive-change" | "open")[], "mounted" | "close" | "responsive-change" | "open", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<DrawerPosition>;
default: string;
validator: (v: any) => boolean;
};
width: {
type: PropType<number | null>;
default: null;
};
height: {
type: PropType<number | null>;
default: null;
};
closeButtonVisible: {
type: BooleanConstructor;
default: boolean;
};
closeButtonText: {
type: StringConstructor;
default: string;
};
closeButtonTitle: {
type: StringConstructor;
default: string;
};
swipeClose: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}>, {
width: number | null;
height: number | null;
border: boolean;
position: DrawerPosition;
zIndex: number;
visible: boolean;
closeButtonVisible: boolean;
closeButtonText: string;
closeButtonTitle: string;
swipeClose: boolean;
showOverlay: boolean;
closeClickOverlay: boolean;
scrollLock: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HDrawerClientOnly: Component;

/**
 * Runtime control methods for `HDrawer` component.
 *
 * This interface defines programmatic access to a drawer’s visibility,
 * edge position, dimensions, swipe-close gestures, overlay, scroll lock,
 * border, and animation settings. You can retrieve an instance
 * using `hison.component.getDrawer(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const drawer = hison.component.getDrawer('drawer01');
 * drawer.open();
 * drawer.setPosition('left');
 * drawer.setWidth(300, true);   // animate width change
 * drawer.setZIndex(1400);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - Visibility (`visible`) is **only** controlled by these methods. The `visible` prop is an initial state.
 * - `scrollLock` is reference-counted across multiple drawers; closing one does not unlock if others are still open.
 * - `zIndex` applies to the wrapper; the overlay is always rendered at `zIndex - 1`.
 * - Size changes (`setWidth` / `setHeight`) can be animated when supported by the current edge position.
 */
export declare interface HDrawerMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * Always `'drawer'`.
     */
    getType(): 'drawer';
    /**
     * Returns whether the drawer is currently visible.
     */
    isVisible(): boolean;
    /**
     * Sets drawer visibility.
     * @param v `true` → open, `false` → close
     */
    setVisible(v: boolean): void | Promise<void>;
    /**
     * Whether the menu is currently open.
     */
    isOpen(): boolean;
    /**
     * Opens the drawer (with animation and scroll lock).
     */
    open(): void | Promise<void>;
    /**
     * Closes the drawer (with animation and scroll unlock).
     */
    close(): void | Promise<void>;
    /**
     * Toggles drawer open/close state.
     */
    toggle(): void | Promise<void>;
    /**
     * Gets the current z-index of the drawer wrapper.
     */
    getZIndex(): number;
    /**
     * Sets the z-index of the drawer wrapper (overlay will use `zIndex - 1`).
     */
    setZIndex(v: number): void;
    /**
     * Gets the current screen edge position of the drawer.
     */
    getPosition(): 'top' | 'bottom' | 'left' | 'right';
    /**
     * Sets the drawer position to a screen edge.
     * Also updates default animations if none were provided via props.
     */
    setPosition(p: 'top' | 'bottom' | 'left' | 'right'): void;
    /**
     * Gets the current width of the drawer in pixels.
     * Returns `null` if not explicitly set (auto).
     */
    getWidth(): number | null;
    /**
     * Sets the drawer width in pixels.
     * @param v width in px (`null` for auto)
     * @param animate whether to animate the resize (default: `false`)
     */
    setWidth(v: number | null, animate: boolean): Promise<void> | void;
    /**
     * Gets the current height of the drawer in pixels.
     * Returns `null` if not explicitly set (auto).
     */
    getHeight(): number | null;
    /**
     * Sets the drawer height in pixels.
     * @param v height in px (`null` for auto)
     * @param animate whether to animate the resize (default: `false`)
     */
    setHeight(v: number | null, animate: boolean): Promise<void> | void;
    /**
     * Returns whether swipe-to-close is enabled.
     */
    isSwipeCloseEnabled(): boolean;
    /**
     * Enables or disables swipe-to-close gestures.
     */
    setSwipeCloseEnabled(v: boolean): void;
    /**
     * Returns whether a close button is visible inside the drawer.
     */
    isCloseButtonVisible(): boolean;
    /**
     * Shows or hides the close button.
     */
    setCloseButtonVisible(v: boolean): void;
    /**
     * Returns whether the overlay (backdrop) is shown.
     */
    isOverlayShown(): boolean;
    /**
     * Sets whether the overlay (backdrop) is shown.
     */
    setOverlayShown(v: boolean): void;
    /**
     * Returns whether clicking the overlay closes the drawer.
     */
    isCloseClickOverlay(): boolean;
    /**
     * Sets whether clicking the overlay closes the drawer.
     */
    setCloseClickOverlay(v: boolean): void;
    /**
     * Returns whether scroll lock is enabled for this drawer.
     */
    isScrollLocked(): boolean;
    /**
     * Enables or disables scroll lock.
     * If enabled while visible, locks immediately.
     * If disabled while visible, unlocks immediately.
     */
    setScrollLock(v: boolean): void;
    /**
     * Returns whether border styling is enabled.
     */
    isBorder(): boolean;
    /**
     * Enables or disables border styling.
     */
    setBorder(v: boolean): void;
    /**
     * Gets the CSS class names for enter/leave animations.
     */
    getAnimationClasses(): {
        enter: string;
        leave: string;
    };
    /**
     * Sets one or both CSS animation classes for drawer enter/leave.
     * Example: `{ enter: 'slide-in', leave: 'slide-out' }`
     */
    setAnimationClasses(opt: Partial<{
        enter: string;
        leave: string;
    }>): void;
    /**
     * Forces a full component reload (rebuild internals).
     */
    reload(): void;
}

export declare const HDropdown: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
toggleStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
menuStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
itemStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
placeholder: {
type: StringConstructor;
default: string;
};
trigger: {
type: PropType<DropdownTrigger | DropdownTriggerValue>;
default: DropdownTrigger;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<HDropdownModel>;
required: boolean;
};
maxHeight: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
closeOnSelect: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
animate: {
type: BooleanConstructor;
default: boolean;
};
duration: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
easing: {
type: StringConstructor;
default: string;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
}>, {
toggleRef: Ref<HTMLElement | null, HTMLElement | null>;
menuRef: Ref<HTMLElement | null, HTMLElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
toggleStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
menuStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
itemStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
placeholder: {
type: StringConstructor;
default: string;
};
trigger: {
type: PropType<DropdownTrigger | DropdownTriggerValue>;
default: DropdownTrigger;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<HDropdownModel>;
required: boolean;
};
maxHeight: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
closeOnSelect: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
animate: {
type: BooleanConstructor;
default: boolean;
};
duration: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
easing: {
type: StringConstructor;
default: string;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
}>> & Readonly<{
onChange?: ((...args: any[]) => any) | undefined;
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
"onToggle-click"?: ((...args: any[]) => any) | undefined;
"onItem-click"?: ((...args: any[]) => any) | undefined;
}> & {}>;
isDisabled: ComputedRef<boolean>;
isReadonly: ComputedRef<boolean>;
visibleClass: ComputedRef<"" | "hison-display-none">;
disableClass: ComputedRef<"" | "hison-disable">;
readonlyClass: ComputedRef<"" | "hison-readonly">;
responsiveClassList: Ref<string[], string[]>;
isOpen: Ref<boolean, boolean>;
trigger: Ref<"click" | "hover" | DropdownTrigger, "click" | "hover" | DropdownTrigger>;
selectedValue: Ref<any, any>;
selectedLabel: ComputedRef<string>;
placeholder: Ref<string, string>;
activeDescId: ComputedRef<string | undefined>;
menuInlineStyle: ComputedRef<Record<string, string>>;
options: Ref<    {
label: string;
value: any;
disabled?: boolean | undefined;
}[], HDropdownOption[] | {
label: string;
value: any;
disabled?: boolean | undefined;
}[]>;
animate: Ref<boolean, boolean>;
rootInlineStyle: ComputedRef<Record<string, string>>;
tabIndex: Ref<number | null, number | null>;
fixedMenuStyle: Ref<Record<string, string>, Record<string, string>>;
openBelow: Ref<boolean, boolean>;
onToggleClick: (e: MouseEvent | KeyboardEvent) => void;
onSelect: (opt: HDropdownOption, e?: MouseEvent) => void;
textAlignStyle: ComputedRef<    {
textAlign: "left" | "center" | "right";
}>;
open: (e?: Event | null) => void;
close: (e?: Event | null) => void;
toggle: (e?: Event | null) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "change" | "close" | "responsive-change" | "open" | "update:modelValue" | "toggle-click" | "item-click")[], "mounted" | "change" | "close" | "responsive-change" | "open" | "update:modelValue" | "toggle-click" | "item-click", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
toggleStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
menuStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
itemStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
placeholder: {
type: StringConstructor;
default: string;
};
trigger: {
type: PropType<DropdownTrigger | DropdownTriggerValue>;
default: DropdownTrigger;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<HDropdownModel>;
required: boolean;
};
maxHeight: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
closeOnSelect: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
animate: {
type: BooleanConstructor;
default: boolean;
};
duration: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
easing: {
type: StringConstructor;
default: string;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
}>> & Readonly<{
onChange?: ((...args: any[]) => any) | undefined;
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
"onToggle-click"?: ((...args: any[]) => any) | undefined;
"onItem-click"?: ((...args: any[]) => any) | undefined;
}>, {
maxHeight: number;
textAlign: "left" | "center" | "right" | TextAlign;
zIndex: number;
visible: boolean;
animate: boolean;
duration: number;
easing: string;
tabIndex: string | number | null;
placeholder: string;
editMode: "editable" | "disable" | "readonly" | EditMode;
trigger: "click" | "hover" | DropdownTrigger;
closeOnSelect: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HDropdownClientOnly: Component;

/**
 * Runtime control methods for `HDropdown` component.
 *
 * This interface defines methods accessible via `hison.component.getDropdown(id)`.
 * It lets you open/close the menu, change selection/options, adjust behavior (trigger, close-on-select),
 * and tweak appearance (edit mode, text alignment) at runtime.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const dd = hison.component.getDropdown('country');
 * dd.open();
 * dd.setOptions([{ label: 'Korea', value: 'KR' }]);
 * dd.setValue('KR');
 * dd.setEditMode('readonly');
 * dd.setTextAlign('center');
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - All changes are reactive and reflected immediately.
 * - Edit modes: `editable`, `readonly`, `disable` (readonly hides the caret & removes box-shadow).
 * - `getText()` returns the label of the currently selected option.
 */
export declare interface HDropdownMethods extends ComponentMethods {
    /**
     * Returns the component type literal.
     */
    getType(): 'dropdown';
    /**
     * Whether the menu is currently open.
     */
    isOpen(): boolean;
    /**
     * Opens the menu.
     */
    open(): void;
    /**
     * Closes the menu.
     */
    close(): void;
    /**
     * Toggles the menu open/closed.
     */
    toggle(): void;
    /**
     * Gets the current edit mode (`editable` | `readonly` | `disable`).
     */
    getEditMode(): EditModeValue;
    /**
     * Sets the edit mode.
     */
    setEditMode(v: EditMode | EditModeValue): void;
    /**
     * Gets the current selected value.
     */
    getValue(): any;
    /**
     * Sets the selected value (does not emit user events).
     */
    setValue(val: any): void;
    /**
     * Returns the label (text) of the current selection.
     */
    getText(): string;
    /**
     * Returns the current option list.
     */
    getOptions(): HDropdownOption[];
    /**
     * Replaces the option list at runtime.
     */
    setOptions(options: HDropdownOption[]): void;
    /**
     * Sets how the menu opens: `'click'` or `'hover'`.
     */
    setTriggerType(trigger: DropdownTrigger): void;
    /**
     * Gets the max menu height in pixels.
     */
    getMaxHeight(): number;
    /**
     * Sets the max menu height in pixels.
     */
    setMaxHeight(maxHeightPx: number): void;
    /**
     * Whether the menu closes automatically after selecting an item.
     */
    isCloseOnSelect(): boolean;
    /**
     * Enables/disables close-on-select behavior.
     */
    setCloseOnSelect(closeOn: boolean): void;
    /**
     * Returns current text alignment (`left` | `center` | `right`).
     */
    getTextAlign(): TextAlignValue;
    /**
     * Sets text alignment for both the toggle and the menu.
     */
    setTextAlign(textAlign: TextAlign | TextAlignValue): void;
    /**
     * Whether animation is enabled.
     */
    getAnimate(): boolean;
    /**
     * Enables/disables animation (caret + menu).
     */
    setAnimate(v: boolean): void;
    /**
     * Returns animation duration in ms.
     */
    getDuration(): number;
    /**
     * Sets animation duration in ms.
     */
    setDuration(ms: number): void;
    /**
     * Returns CSS timing function used by transitions.
     */
    getEasing(): string;
    /**
     * Sets CSS timing function (e.g., 'ease-in-out', 'cubic-bezier(...)').
     */
    setEasing(fn: string): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Gets the current z-index of the dropdwon wrapper.
     */
    getZIndex(): number;
    /**
     * Sets the z-index of the dropdwon wrapper
     */
    setZIndex(v: number): void;
    /**
     * Moves focus to the toggle element.
     */
    focus(): void;
}

/**
 * v-model payload for `HDropdown`.
 *
 * Contains the current `value` and the list of `options`.
 * Used for two-way binding and runtime updates.
 *
 * @example
 * {
 *   value: 'KR',
 *   options: [
 *     { label: 'Korea', value: 'KR' },
 *     { label: 'Japan', value: 'JP' }
 *   ]
 * }
 */
export declare interface HDropdownModel {
    /** Currently selected option value */
    value: any;
    /** Full list of selectable options */
    options: HDropdownOption[];
}

/**
 * Defines a selectable option in `HDropdown`.
 *
 * Each option has a `label` (shown to user) and `value` (programmatic).
 * Optional `disabled` makes the item visible but not selectable.
 *
 * @example
 * { label: 'Korea', value: 'KR' }
 */
export declare interface HDropdownOption {
    /** Display text shown in the dropdown menu */
    label: string;
    /** Programmatic value associated with this option */
    value: any;
    /** If true, option is visible but cannot be selected */
    disabled?: boolean;
}

export declare const HEX_COLOR_RE: RegExp;

export declare const HFileset: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<AttachedFileItem[]>;
default: () => never[];
};
attId: {
type: StringConstructor;
default: string;
};
addButtonText: {
type: StringConstructor;
default: string;
};
removeButtonText: {
type: StringConstructor;
default: string;
};
placeholder: {
type: StringConstructor;
default: string;
};
enableDrop: {
type: BooleanConstructor;
default: boolean;
};
downloadHandler: {
type: PropType<(file: AttachedFileItem) => void>;
default: undefined;
};
buttonOnly: {
type: BooleanConstructor;
default: boolean;
};
multiCols: {
type: BooleanConstructor;
default: boolean;
};
multiple: {
type: BooleanConstructor;
default: boolean;
};
allowedTypes: {
type: PropType<string | string[]>;
default: undefined;
validator: (v: any) => boolean;
};
disallowedTypes: {
type: PropType<string | string[]>;
default: undefined;
validator: (v: any) => boolean;
};
maxFileSize: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
maxTotalFileSize: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
maxFileCount: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
onDisallowedType: {
type: PropType<(currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void>;
default: undefined;
};
onMaxFileSizeExceeded: {
type: PropType<(currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void>;
default: undefined;
};
onMaxTotalSizeExceeded: {
type: PropType<(currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void>;
default: undefined;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
fileInputRef: Ref<HTMLInputElement | null, HTMLInputElement | null>;
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<AttachedFileItem[]>;
default: () => never[];
};
attId: {
type: StringConstructor;
default: string;
};
addButtonText: {
type: StringConstructor;
default: string;
};
removeButtonText: {
type: StringConstructor;
default: string;
};
placeholder: {
type: StringConstructor;
default: string;
};
enableDrop: {
type: BooleanConstructor;
default: boolean;
};
downloadHandler: {
type: PropType<(file: AttachedFileItem) => void>;
default: undefined;
};
buttonOnly: {
type: BooleanConstructor;
default: boolean;
};
multiCols: {
type: BooleanConstructor;
default: boolean;
};
multiple: {
type: BooleanConstructor;
default: boolean;
};
allowedTypes: {
type: PropType<string | string[]>;
default: undefined;
validator: (v: any) => boolean;
};
disallowedTypes: {
type: PropType<string | string[]>;
default: undefined;
validator: (v: any) => boolean;
};
maxFileSize: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
maxTotalFileSize: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
maxFileCount: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
onDisallowedType: {
type: PropType<(currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void>;
default: undefined;
};
onMaxFileSizeExceeded: {
type: PropType<(currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void>;
default: undefined;
};
onMaxTotalSizeExceeded: {
type: PropType<(currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void>;
default: undefined;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onBlur?: ((...args: any[]) => any) | undefined;
onChange?: ((...args: any[]) => any) | undefined;
onFocus?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
onAdd?: ((...args: any[]) => any) | undefined;
onDownload?: ((...args: any[]) => any) | undefined;
onRemove?: ((...args: any[]) => any) | undefined;
}> & {}>;
visibleFiles: ComputedRef<    {
fileId?: string | undefined;
fileName: string;
fileSize?: number | undefined;
filePath?: string | undefined;
extension?: string | undefined;
file?: {
readonly lastModified: number;
readonly name: string;
readonly webkitRelativePath: string;
readonly size: number;
readonly type: string;
arrayBuffer: () => Promise<ArrayBuffer>;
bytes: () => Promise<Uint8Array<ArrayBuffer>>;
slice: (start?: number, end?: number, contentType?: string) => Blob;
stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
text: () => Promise<string>;
} | undefined;
isNew?: boolean | undefined;
isDeleted?: boolean | undefined;
}[]>;
filesetMethods: Ref<    {
getType: () => "fileset";
getEditMode: () => EditModeValue;
setEditMode: (mode: EditMode | EditModeValue) => void;
getValue: () => AttachedFileItem[] | null;
setValue: (attachedFileItem: AttachedFileItem[]) => void;
getDataModel: () => InterfaceDataModel<AttachedFileItem> | null;
setDataModel: <T extends AttachedFileItem>(dataModel: InterfaceDataModel<T>) => void;
load: <T extends Record<string, any>>(data: AttachedFileItem | Record<string, any> | InterfaceDataModel<T>) => void;
getAttId: () => string;
setAttId: (attId: string) => void;
getAddButtonText: () => string;
setAddButtonText: (addButtonText: string) => void;
getRemoveButtonText: () => string;
setRemoveButtonText: (removeButtonText: string) => void;
getPlaceholder: () => string;
setPlaceholder: (placeholder: string) => void;
isEnableDrop: () => boolean;
setEnableDrop: (enableDrop: boolean) => void;
setDownloadHandler: (downloadHandler: (file: AttachedFileItem) => void) => void;
isButtonOnly: () => boolean;
setButtonOnly: (v: boolean) => void;
isMultiCols: () => boolean;
setMultiCols: (multiCols: boolean) => void;
isMultiple: () => boolean;
setMultiple: (multiple: boolean) => void;
getAllowedTypes: () => string[];
setAllowedTypes: (allowedTypes: string[]) => void;
getDisallowedTypes: () => string[];
setDisallowedTypes: (disallowedTypes: string[]) => void;
getMaxFileSize: () => number;
setMaxFileSize: (maxFileSize: number) => void;
getMaxTotalFileSize: () => number;
setMaxTotalFileSize: (maxTotalFileSize: number) => void;
getMaxFileCount: () => number;
setMaxFileCount: (maxFileCount: number) => void;
setOnDisallowedType: (onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void) => void;
setOnMaxFileSizeExceeded: (onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void) => void;
setOnMaxTotalSizeExceeded: (onMaxTotalSizeExceeded: (currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void) => void;
isModified: () => boolean;
setModified: (modified: boolean) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null, HFilesetMethods | {
getType: () => "fileset";
getEditMode: () => EditModeValue;
setEditMode: (mode: EditMode | EditModeValue) => void;
getValue: () => AttachedFileItem[] | null;
setValue: (attachedFileItem: AttachedFileItem[]) => void;
getDataModel: () => InterfaceDataModel<AttachedFileItem> | null;
setDataModel: <T extends AttachedFileItem>(dataModel: InterfaceDataModel<T>) => void;
load: <T extends Record<string, any>>(data: AttachedFileItem | Record<string, any> | InterfaceDataModel<T>) => void;
getAttId: () => string;
setAttId: (attId: string) => void;
getAddButtonText: () => string;
setAddButtonText: (addButtonText: string) => void;
getRemoveButtonText: () => string;
setRemoveButtonText: (removeButtonText: string) => void;
getPlaceholder: () => string;
setPlaceholder: (placeholder: string) => void;
isEnableDrop: () => boolean;
setEnableDrop: (enableDrop: boolean) => void;
setDownloadHandler: (downloadHandler: (file: AttachedFileItem) => void) => void;
isButtonOnly: () => boolean;
setButtonOnly: (v: boolean) => void;
isMultiCols: () => boolean;
setMultiCols: (multiCols: boolean) => void;
isMultiple: () => boolean;
setMultiple: (multiple: boolean) => void;
getAllowedTypes: () => string[];
setAllowedTypes: (allowedTypes: string[]) => void;
getDisallowedTypes: () => string[];
setDisallowedTypes: (disallowedTypes: string[]) => void;
getMaxFileSize: () => number;
setMaxFileSize: (maxFileSize: number) => void;
getMaxTotalFileSize: () => number;
setMaxTotalFileSize: (maxTotalFileSize: number) => void;
getMaxFileCount: () => number;
setMaxFileCount: (maxFileCount: number) => void;
setOnDisallowedType: (onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void) => void;
setOnMaxFileSizeExceeded: (onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void) => void;
setOnMaxTotalSizeExceeded: (onMaxTotalSizeExceeded: (currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void) => void;
isModified: () => boolean;
setModified: (modified: boolean) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
responsiveClassList: Ref<string[], string[]>;
buttonClassList: ComputedRef<string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
editModeClass: ComputedRef<string>;
disable: ComputedRef<boolean>;
readonly: ComputedRef<boolean>;
addButtonText: Ref<string, string>;
removeButtonText: Ref<string, string>;
placeholder: Ref<string, string>;
isDragging: Ref<boolean, boolean>;
multiCols: Ref<boolean, boolean>;
multiple: Ref<boolean, boolean>;
accept: ComputedRef<string | undefined>;
tabIndex: Ref<number | null, number | null>;
buttonOnly: Ref<boolean, boolean>;
buttonOnlyClass: ComputedRef<string>;
openFileDialog: () => void;
removeFile: (file: AttachedFileItem) => void;
onFileChange: (e: Event) => void;
downloadFile: (file: AttachedFileItem) => void;
handleDragEnter: () => void;
handleDrop: (e: DragEvent) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("download" | "add" | "mounted" | "blur" | "change" | "focus" | "responsive-change" | "update:modelValue" | "remove")[], "download" | "add" | "mounted" | "blur" | "change" | "focus" | "responsive-change" | "update:modelValue" | "remove", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<AttachedFileItem[]>;
default: () => never[];
};
attId: {
type: StringConstructor;
default: string;
};
addButtonText: {
type: StringConstructor;
default: string;
};
removeButtonText: {
type: StringConstructor;
default: string;
};
placeholder: {
type: StringConstructor;
default: string;
};
enableDrop: {
type: BooleanConstructor;
default: boolean;
};
downloadHandler: {
type: PropType<(file: AttachedFileItem) => void>;
default: undefined;
};
buttonOnly: {
type: BooleanConstructor;
default: boolean;
};
multiCols: {
type: BooleanConstructor;
default: boolean;
};
multiple: {
type: BooleanConstructor;
default: boolean;
};
allowedTypes: {
type: PropType<string | string[]>;
default: undefined;
validator: (v: any) => boolean;
};
disallowedTypes: {
type: PropType<string | string[]>;
default: undefined;
validator: (v: any) => boolean;
};
maxFileSize: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
maxTotalFileSize: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
maxFileCount: {
type: NumberConstructor;
default: number;
validator: (n: any) => boolean;
};
onDisallowedType: {
type: PropType<(currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void>;
default: undefined;
};
onMaxFileSizeExceeded: {
type: PropType<(currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void>;
default: undefined;
};
onMaxTotalSizeExceeded: {
type: PropType<(currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void>;
default: undefined;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onBlur?: ((...args: any[]) => any) | undefined;
onChange?: ((...args: any[]) => any) | undefined;
onFocus?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
onAdd?: ((...args: any[]) => any) | undefined;
onDownload?: ((...args: any[]) => any) | undefined;
onRemove?: ((...args: any[]) => any) | undefined;
}>, {
visible: boolean;
tabIndex: string | number | null;
multiple: boolean;
placeholder: string;
modelValue: AttachedFileItem[];
editMode: "editable" | "disable" | "readonly" | EditMode;
attId: string;
addButtonText: string;
removeButtonText: string;
enableDrop: boolean;
downloadHandler: (file: AttachedFileItem) => void;
buttonOnly: boolean;
multiCols: boolean;
allowedTypes: string | string[];
disallowedTypes: string | string[];
maxFileSize: number;
maxTotalFileSize: number;
maxFileCount: number;
onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void;
onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void;
onMaxTotalSizeExceeded: (currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HFilesetClientOnly: Component;

/**
 * Interface for runtime control of `<HFileset>` component.
 *
 * This interface exposes a full set of methods for dynamically controlling and querying the state
 * of an HFileset instance registered with hisonvue. All methods are available via `hison.vue.getInput(id)` or
 * on the instance exposed in the `mounted` event.
 *
 * **Typical use cases include:**
 * - Programmatically changing edit mode, file upload rules, button labels, and placeholders
 * - Updating allowed/disallowed file types, file size/count limits, and drag-and-drop settings at runtime
 * - Assigning custom file download logic (e.g., S3, access control)
 * - Replacing or reading the list of attached files (including marking deletions or restoring files)
 * - Integrating with server or parent logic to control the file set from outside the component
 *
 * :::example
 * ```ts
 * // Get runtime methods from hison.vue
 * const fileset = hison.vue.getInput('myFileset') as HFilesetMethods
 *
 * // Change edit mode to readonly
 * fileset.setEditMode('readonly')
 *
 * // Limit to only 2 files and only PDFs
 * fileset.setMaxFileCount(2)
 * fileset.setAllowedTypes(['.pdf'])
 *
 * // Change add button label dynamically
 * fileset.setAddButtonText('ADD FILE')
 *
 * // Replace all files with new ones
 * fileset.setValue([
 *   { fileName: 'newfile.pdf', fileSize: 100000, extension: 'pdf', isNew: true, file: someFileObj }
 * ])
 *
 * // Focus add button programmatically
 * fileset.focus()
 * ```
 * :::
 *
 * **Method groups:**
 * - **Edit Mode & Visibility**: Control when/how the user can add/delete files
 * - **File List**: Get/set all attached files, reflecting deletion or restoration
 * - **File Upload Options**: Allowed/disallowed types, size, count, drag-and-drop, multi-column
 * - **UI Labels & Placeholders**: Set button texts and empty message dynamically
 * - **Custom Handlers**: Assign custom download or validation error logic
 * - **State Query**: Check for modification, get attachment group ID, etc.
 *
 * All setters immediately update the internal state and UI.
 */
export declare interface HFilesetMethods extends ComponentMethods {
    /**
     * Returns the type of this component instance.
     * Always returns `'fileset'` for `<HFileset>`.
     */
    getType(): 'fileset';
    /**
     * Gets the current edit mode of the file set.
     *
     * - `'editable'`: Full editing (add/delete) enabled
     * - `'readonly'`: View only, file actions hidden
     * - `'disable'`: Completely disabled, grayed out
     */
    getEditMode(): EditModeValue;
    /**
     * Sets the edit mode of the file set.
     *
     * - `'editable'`: Allows adding/removing files
     * - `'readonly'`: Disables all file operations but keeps UI visible
     * - `'disable'`: Fully disables the UI (input, buttons)
     *
     * @param mode - The new edit mode
     */
    setEditMode(mode: EditMode | EditModeValue): void;
    /**
     * Returns the current (visible, not deleted) file list.
     *
     * Each file is an object conforming to `AttachedFileItem`.
     * Files marked `isDeleted: true` are excluded.
     *
     * @returns The current list of files.
     */
    getValue(): AttachedFileItem[] | null;
    /**
     * Sets the internal file list to the provided value.
     *
     * - The list will be displayed immediately and emitted via `update:modelValue`.
     * - Use this to reset, replace, or synchronize the files with backend data.
     *
     * @param attachedFileItem - The new file list.
     */
    setValue(attachedFileItem: AttachedFileItem[]): void;
    /**
     * Converts the current editor content into a `DataModel` instance.
     *
     * - Returns a new `DataModel` where each property of `AttachedFileItem` (like `html`, `links`, `files`, etc.)
     *   becomes a column, and a single row represents the editor state.
     *
     * @returns A `DataModel<AttachedFileItem>` containing the editor's current data.
     */
    getDataModel(): InterfaceDataModel<AttachedFileItem> | null;
    /**
     * Populates the editor using a `DataModel` instance.
     *
     * - Extracts values from the first row of the `DataModel`, if available.
     * - Uses the values from columns like `html`, `plainText`, `links`, etc. to restore editor content.
     *
     * @param dataModel A `DataModel` whose first row maps to `AttachedFileItem` structure.
     */
    setDataModel<T extends AttachedFileItem>(dataModel: InterfaceDataModel<T>): void;
    /**
     * Loads editor content from either a `AttachedFileItem` object or a compatible `DataModel`.
     *
     * - Accepts plain `AttachedFileItem`, raw object, or `DataModel`.
     * - Automatically determines how to process the input and restores the editor accordingly.
     *
     * @param data Editor content to load, in `AttachedFileItem` or `DataModel` form.
     */
    load<T extends Record<string, any>>(data: AttachedFileItem | Record<string, any> | InterfaceDataModel<T>): void;
    /**
     * Returns the current `attId` (attachment group ID).
     *
     * Used to group files logically, often for backend APIs.
     */
    getAttId(): string;
    /**
     * Sets the `attId` (attachment group ID).
     *
     * - Use to associate this file set with a different group in your backend.
     * - Has no effect on UI, but is included in emitted file info.
     *
     * @param attId - The new attachment group ID.
     */
    setAttId(attId: string): void;
    /**
     * Gets the text content currently shown on the add/upload button.
     *
     * - Corresponds to `addButtonText` prop.
     */
    getAddButtonText(): string;
    /**
     * Sets the text shown on the add/upload button.
     *
     * - Supports multiline via `\n` (rendered as `<br>`).
     * - If an `add-button` slot is used, this will have no effect.
     *
     * @param addButtonText - New button text
     */
    setAddButtonText(addButtonText: string): void;
    /**
     * Gets the text content currently shown on the remove/delete button.
     *
     * - Corresponds to `removeButtonText` prop.
     */
    getRemoveButtonText(): string;
    /**
     * Sets the text shown on the remove/delete button.
     *
     * - Supports multiline via `\n` (rendered as `<br>`).
     * - If a `remove-button` slot is used, this will have no effect.
     *
     * @param removeButtonText - New button text
     */
    setRemoveButtonText(removeButtonText: string): void;
    /**
     * Gets the current placeholder text (empty state message).
     *
     * - Shown when there are no files in the file set.
     * - Corresponds to the `placeholder` prop.
     */
    getPlaceholder(): string;
    /**
     * Sets the placeholder text (empty state message).
     *
     * - Updates UI immediately.
     *
     * @param placeholder - New placeholder text
     */
    setPlaceholder(placeholder: string): void;
    /**
     * Returns whether drag-and-drop uploading is currently enabled.
     *
     * - Controlled by the `enableDrop` prop.
     */
    isEnableDrop(): boolean;
    /**
     * Enables or disables drag-and-drop file uploading.
     *
     * @param enableDrop - `true` to allow drag-and-drop, `false` to block it.
     */
    setEnableDrop(enableDrop: boolean): void;
    /**
     * Sets a custom download handler function for files.
     *
     * - If set, this function is called when a file is downloaded (clicked).
     * - Use for custom logic, e.g. auth, S3, signed URL, access logging, etc.
     * - Overrides default file download behavior.
     *
     * @param downloadHandler - Function called with the file to download
     */
    setDownloadHandler(downloadHandler: (file: AttachedFileItem) => void): void;
    /**
     * Returns whether the component is currently in button-only mode.
     *
     * - `true`: Only the add/upload button is rendered.
     * - `false`: Normal mode (file list + add button).
     */
    isButtonOnly(): boolean;
    /**
     * Enables or disables button-only mode.
     *
     * @param v - `true` to render only the button, `false` for normal UI.
     */
    setButtonOnly(v: boolean): void;
    /**
     * Returns whether the file list is currently displayed in multiple columns.
     *
     * - Controlled by the `multiCols` prop.
     */
    isMultiCols(): boolean;
    /**
     * Enables or disables multi-column display of the file list.
     *
     * - When enabled, files wrap into multiple rows/columns for easier viewing.
     *
     * @param multiCols - `true` to enable, `false` to disable.
     */
    setMultiCols(multiCols: boolean): void;
    /**
     * Returns whether multiple file selection is currently allowed.
     *
     * - Controlled by the `multiple` prop.
     * - If false, only one file can be uploaded at a time (new files replace previous).
     */
    isMultiple(): boolean;
    /**
     * Enables or disables multiple file selection.
     *
     * - If set to `false`, adding new files replaces the existing one.
     * - If set to `true`, users can add up to `maxFileCount` files.
     *
     * @param multiple - `true` to allow multiple, `false` for single file only.
     */
    setMultiple(multiple: boolean): void;
    /**
     * Gets the current list of allowed file types/extensions.
     *
     * - Controlled by the `allowedTypes` prop.
     * - MIME types or extensions (e.g. `.pdf`, `image/png`).
     */
    getAllowedTypes(): string[];
    /**
     * Sets the allowed file types/extensions.
     *
     * - Accepts an array of MIME types or file extensions.
     * - Updates the file input's accept filter and internal validation.
     *
     * @param allowedTypes - Array of allowed types/extensions.
     */
    setAllowedTypes(allowedTypes: string[]): void;
    /**
     * Gets the current list of disallowed file types/extensions.
     *
     * - Controlled by the `disallowedTypes` prop.
     * - MIME types or extensions (e.g. `.exe`, `application/x-msdownload`).
     */
    getDisallowedTypes(): string[];
    /**
     * Sets the disallowed file types/extensions.
     *
     * - Accepts an array of MIME types or file extensions.
     * - Any file matching these types/extensions will be rejected.
     *
     * @param disallowedTypes - Array of disallowed types/extensions.
     */
    setDisallowedTypes(disallowedTypes: string[]): void;
    /**
     * Gets the current maximum allowed file size (per file, bytes).
     *
     * - Controlled by the `maxFileSize` prop.
     */
    getMaxFileSize(): number;
    /**
     * Sets the maximum allowed file size (per file, bytes).
     *
     * - Files exceeding this size are rejected on upload.
     *
     * @param maxFileSize - Maximum size in bytes
     */
    setMaxFileSize(maxFileSize: number): void;
    /**
     * Gets the current maximum allowed total file size (all files, bytes).
     *
     * - Controlled by the `maxTotalFileSize` prop.
     */
    getMaxTotalFileSize(): number;
    /**
     * Sets the maximum allowed total file size (all files, bytes).
     *
     * - The sum of all attached files (including new and existing).
     * - Files causing the total to exceed this value will be rejected.
     *
     * @param maxTotalFileSize - Maximum combined size in bytes
     */
    setMaxTotalFileSize(maxTotalFileSize: number): void;
    /**
     * Gets the current maximum number of files that can be uploaded.
     *
     * - Controlled by the `maxFileCount` prop.
     * - `0` means unlimited.
     */
    getMaxFileCount(): number;
    /**
     * Sets the maximum number of files that can be uploaded.
     *
     * - When exceeded, older files are removed/replaced automatically.
     *
     * @param maxFileCount - Maximum file count (0 for unlimited)
     */
    setMaxFileCount(maxFileCount: number): void;
    /**
     * Sets a custom callback when a file has a disallowed type/extension.
     *
     * - Called during file selection/drag if a file fails allowed/disallowed check.
     * - Use for custom alerts, validation UI, logging, etc.
     *
     * @param onDisallowedType - Callback with the file, allowedTypes, disallowedTypes.
     */
    setOnDisallowedType(onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void): void;
    /**
     * Sets a custom callback when a file exceeds the maximum file size.
     *
     * - Use to alert the user or log the event.
     *
     * @param onMaxFileSizeExceeded - Callback with file, file size, and limit.
     */
    setOnMaxFileSizeExceeded(onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void): void;
    /**
     * Sets a custom callback when the total file size exceeds the maximum allowed.
     *
     * - Called before adding a file that would overflow the total allowed size.
     *
     * @param onMaxTotalSizeExceeded - Callback with file, projected total, and limit.
     */
    setOnMaxTotalSizeExceeded(onMaxTotalSizeExceeded: (currentCheckFile: File, currentTotalFileSize: number, maxTotalFileSizeAllowed: number) => void): void;
    /**
     * Returns whether the file list has been modified since the last set/reset.
     *
     * - Adding or removing files, or changing file info, sets this to true.
     */
    isModified(): boolean;
    /**
     * Sets the "modified" state of the file set.
     *
     * - Use to manually reset the modified flag (e.g., after save).
     *
     * @param modified - `true` to mark as modified, `false` to reset.
     */
    setModified(modified: boolean): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Focuses the add file button.
     *
     * - Useful for accessibility or guiding user attention programmatically.
     */
    focus(): void;
}

export declare const HGap: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
line: {
type: PropType<HGapLine | HGapLineValue>;
default: string;
validator: (v: any) => boolean;
};
lineStyle: {
type: PropType<HGapLineStyle | HGapLineStyleValue>;
default: string;
validator: (v: any) => boolean;
};
lineWidth: {
type: PropType<number | string>;
default: number;
};
lineColor: {
type: StringConstructor;
default: string;
};
}>, {
gapRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
line: {
type: PropType<HGapLine | HGapLineValue>;
default: string;
validator: (v: any) => boolean;
};
lineStyle: {
type: PropType<HGapLineStyle | HGapLineStyleValue>;
default: string;
validator: (v: any) => boolean;
};
lineWidth: {
type: PropType<number | string>;
default: number;
};
lineColor: {
type: StringConstructor;
default: string;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
line: Ref<"none" | "horizontal" | "vertical" | HGapLine, "none" | "horizontal" | "vertical" | HGapLine>;
visibleClass: ComputedRef<"" | "hison-display-none">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
responsiveClassList: Ref<string[], string[]>;
horizontalStyle: ComputedRef<    {
borderTop: string;
}>;
verticalStyle: ComputedRef<    {
borderLeft: string;
}>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change")[], "mounted" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
line: {
type: PropType<HGapLine | HGapLineValue>;
default: string;
validator: (v: any) => boolean;
};
lineStyle: {
type: PropType<HGapLineStyle | HGapLineStyleValue>;
default: string;
validator: (v: any) => boolean;
};
lineWidth: {
type: PropType<number | string>;
default: number;
};
lineColor: {
type: StringConstructor;
default: string;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
line: "none" | "horizontal" | "vertical" | HGapLine;
border: boolean;
visible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
lineWidth: string | number;
lineStyle: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" | HGapLineStyle;
lineColor: string;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HGapClientOnly: Component;

export declare enum HGapLine {
    none = "none",
    horizontal = "horizontal",
    vertical = "vertical"
}

export declare enum HGapLineStyle {
    solid = "solid",
    dashed = "dashed",
    dotted = "dotted",
    double = "double",
    groove = "groove",
    ridge = "ridge",
    inset = "inset",
    outset = "outset"
}

export declare type HGapLineStyleValue = typeof H_GAP_LINE_STYLE_VALUES[number];

export declare type HGapLineValue = typeof H_GAP_RULE_VALUES[number];

/**
 * Runtime control methods for `HGap` component.
 *
 * This interface defines methods that can be accessed via `hison.component.getGap(id)`.
 * Use these methods to programmatically control spacing behavior and optional divider line rendering.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const gap = hison.component.getGap('gap01')
 *
 * // Show a horizontal divider with dashed line
 * gap.setVisible(true)
 * gap.setLine('horizontal')
 * gap.setLineStyle('dashed')
 * gap.setLineWidth(2)             // number => px
 *
 * // Theme-driven color (from hison-color-* class)
 * gap.setLineColor('')
 *
 * // Switch to vertical divider with transparent background
 * gap.setBackgroundType('transparent')
 * gap.setLine('vertical')
 *
 * // Hide again
 * gap.setVisible(false)
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `lineColor`:
 *   - `''` (empty) → auto color from wrapper’s `hison-color-*` class or fallback muted color.
 *   - Any valid CSS color (hex, rgb, var) is accepted.
 * - `lineWidth` accepts a `number` (treated as `px`) or a CSS length string (e.g. `'0.5rem'`, `'2px'`).
 * - All changes are reactive and reflected immediately in the DOM.
 */
export declare interface HGapMethods extends ComponentMethods {
    /**
     * Returns the type of the component (always `'gap'`).
     */
    getType(): 'gap';
    /**
     * Returns whether the gap is visible.
     */
    isVisible(): boolean;
    /**
     * Sets visibility of the gap.
     */
    setVisible(visible: boolean): void;
    /**
     * Returns whether the gap shows border (box-shadow).
     */
    isBorder(): boolean;
    /**
     * Sets whether the gap shows border (box-shadow).
     */
    setBorder(border: boolean): void;
    /**
     * Gets the current background type ('filled' | 'empty' | 'transparent').
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the gap.
     */
    setBackgroundType(type: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the current line mode ('none' | 'horizontal' | 'vertical').
     */
    getLine(): 'none' | 'horizontal' | 'vertical';
    /**
     * Sets the line mode ('none' | 'horizontal' | 'vertical').
     */
    setLine(line: HGapLine | HGapLineValue): void;
    /**
     * Gets the current line style ('solid' | 'dashed' | 'dotted' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset').
     */
    getLineStyle(): HGapLineStyleValue;
    /**
     * Sets the line style.
     */
    setLineStyle(style: HGapLineStyle | HGapLineStyleValue): void;
    /**
     * Gets the current line width (number in px or CSS length string).
     */
    getLineWidth(): number | string;
    /**
     * Sets the line width (number → px, or CSS length string).
     */
    setLineWidth(width: number | string): void;
    /**
     * Gets the current line color (CSS value or empty string for auto).
     */
    getLineColor(): string;
    /**
     * Sets the line color (CSS value, or '' to auto resolve from theme).
     */
    setLineColor(color?: string): void;
}

export declare const HGrid: DefineComponent<ExtractPropTypes<    {
activeCell: PropType<(row: number, colId: string) => boolean>;
activeCells: PropType<(startRow: number, startColId: string, endRow: number, endColId: string) => boolean>;
activeRow: PropType<(row: number) => boolean>;
activeRows: PropType<(startRow: number, endRow: number) => boolean>;
activeCol: PropType<(colId: string) => boolean>;
activeCols: PropType<(startColId: string, endColId: string) => boolean>;
beforeChange: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
afterChange: PropType<(row: number, colId: string, oldValue: any, newValue: any) => void>;
beforeClickCell: PropType<(row: number, colId: string) => boolean>;
afterClickCell: PropType<(row: number, colId: string) => void>;
clickSelect: PropType<(row: number, colId: string, selectNode: HTMLElement) => boolean>;
clickCheckbox: PropType<(row: number, colId: string, checkboxNode: HTMLElement) => boolean>;
clickButton: PropType<(row: number, colId: string, buttonNude: HTMLElement) => boolean>;
clickLink: PropType<(row: number, colId: string, linkNode: HTMLElement) => boolean>;
beforeDblClickCell: PropType<(row: number, colId: string) => boolean>;
afterDblClickCell: PropType<(row: number, colId: string) => void>;
beforeClickHeader: PropType<(row: number, colId: string) => boolean>;
afterClickHeader: PropType<(row: number, colId: string) => void>;
beforeDblClickHeader: PropType<(row: number, colId: string) => boolean>;
afterDblClickHeader: PropType<(row: number, colId: string) => void>;
beforeEditEnter: PropType<(row: number, colId: string, editorNode: HTMLElement) => boolean>;
afterEditEnter: PropType<(row: number, colId: string, editorNode: HTMLElement) => void>;
editEnding: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
clickFilter: PropType<(row: number, colId: string, filterNode: HTMLElement) => boolean>;
chooseFilter: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
paste: PropType<(startRow: number, startColId: string, clipboardText: string) => boolean>;
copy: PropType<(startRow: number, startColId: string, endRow: number, endColId: string, copyText: string) => boolean>;
resize: PropType<(colId: string) => boolean>;
keydownEditor: PropType<(event: KeyboardEvent) => boolean>;
inputEditor: PropType<(event: InputEvent) => boolean>;
keydownGrid: PropType<(event: KeyboardEvent) => boolean>;
modelValue: PropType<any[]>;
id: {
type: StringConstructor;
required: boolean;
};
columns: {
type: PropType<HGridColumn[]>;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties>;
required: boolean;
};
name: {
type: StringConstructor;
required: boolean;
};
locked: {
type: BooleanConstructor;
default: boolean;
};
lockedColor: {
type: BooleanConstructor;
default: boolean;
};
resizable: {
type: BooleanConstructor;
default: boolean;
};
redoable: {
type: BooleanConstructor;
default: boolean;
};
redoCount: {
type: NumberConstructor;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
headerVisible: {
type: BooleanConstructor;
default: boolean;
};
rownumVisible: {
type: BooleanConstructor;
default: boolean;
};
rownumSize: {
type: StringConstructor;
required: boolean;
};
rownumLockedColor: {
type: BooleanConstructor;
default: boolean;
};
statusVisible: {
type: BooleanConstructor;
default: boolean;
};
statusLockedColor: {
type: BooleanConstructor;
default: boolean;
};
selectionPolicy: {
type: PropType<SelectionPolicy | SelectionPolicyValue>;
required: boolean;
validator: (v: any) => boolean;
};
nullValue: {
type: StringConstructor;
required: boolean;
};
dateFormat: {
type: PropType<GridDateFormat | GridDateFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
monthFormat: {
type: PropType<GridMonthFormat | GridMonthFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
alterRow: {
type: BooleanConstructor;
default: boolean;
};
frozenColCount: {
type: NumberConstructor;
required: boolean;
};
frozenRowCount: {
type: NumberConstructor;
required: boolean;
};
sortable: {
type: BooleanConstructor;
default: boolean;
};
filterable: {
type: BooleanConstructor;
default: boolean;
};
allCheckable: {
type: BooleanConstructor;
default: boolean;
};
checkedValue: {
type: StringConstructor;
required: boolean;
};
uncheckedValue: {
type: StringConstructor;
required: boolean;
};
width: {
type: StringConstructor;
required: boolean;
};
height: {
type: StringConstructor;
required: boolean;
};
margin: {
type: StringConstructor;
required: boolean;
};
padding: {
type: StringConstructor;
required: boolean;
};
sizeLevel: {
type: NumberConstructor;
required: boolean;
};
verticalAlign: {
type: PropType<GridVerticalAlign | GridVerticalAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
cellFontSize: {
type: StringConstructor;
required: boolean;
};
cellMinHeight: {
type: StringConstructor;
required: boolean;
};
horizenBorderSize: {
type: NumberConstructor;
required: boolean;
};
verticalBorderSize: {
type: NumberConstructor;
required: boolean;
};
gridFontFamily: {
type: StringConstructor;
required: boolean;
};
editorFontFamily: {
type: StringConstructor;
required: boolean;
};
overflowWrap: {
type: StringConstructor;
required: boolean;
};
wordBreak: {
type: StringConstructor;
required: boolean;
};
whiteSpace: {
type: StringConstructor;
required: boolean;
};
linkHasUnderLine: {
type: BooleanConstructor;
required: boolean;
};
invertColor: {
type: BooleanConstructor;
default: boolean;
};
color: {
type: PropType<ColorSet | string>;
required: boolean;
validator: (v: any) => boolean;
};
gridBorderColor: {
type: StringConstructor;
required: boolean;
};
headerCellBackColor: {
type: StringConstructor;
required: boolean;
};
headerCellBorderColor: {
type: StringConstructor;
required: boolean;
};
headerCellFontColor: {
type: StringConstructor;
required: boolean;
};
footerCellBackColor: {
type: StringConstructor;
required: boolean;
};
footerCellBorderColor: {
type: StringConstructor;
required: boolean;
};
footerCellFontColor: {
type: StringConstructor;
required: boolean;
};
bodyBackColor: {
type: StringConstructor;
required: boolean;
};
bodyCellBackColor: {
type: StringConstructor;
required: boolean;
};
bodyCellBorderColor: {
type: StringConstructor;
required: boolean;
};
bodyCellFontColor: {
type: StringConstructor;
required: boolean;
};
editorBackColor: {
type: StringConstructor;
required: boolean;
};
editorFontColor: {
type: StringConstructor;
required: boolean;
};
selectCellBackColor: {
type: StringConstructor;
required: boolean;
};
selectCellFontColor: {
type: StringConstructor;
required: boolean;
};
selectColBackColor: {
type: StringConstructor;
required: boolean;
};
selectColFontColor: {
type: StringConstructor;
required: boolean;
};
selectRowBackColor: {
type: StringConstructor;
required: boolean;
};
selectRowFontColor: {
type: StringConstructor;
required: boolean;
};
mouseoverCellBackColor: {
type: StringConstructor;
required: boolean;
};
mouseoverCellFontColor: {
type: StringConstructor;
required: boolean;
};
lockCellBackColor: {
type: StringConstructor;
required: boolean;
};
lockCellFontColor: {
type: StringConstructor;
required: boolean;
};
alterRowBackColor: {
type: StringConstructor;
required: boolean;
};
alterRowFontColor: {
type: StringConstructor;
required: boolean;
};
buttonFontColor: {
type: StringConstructor;
required: boolean;
};
buttonBorderColor: {
type: StringConstructor;
required: boolean;
};
buttonBackColor: {
type: StringConstructor;
required: boolean;
};
buttonHoverFontColor: {
type: StringConstructor;
required: boolean;
};
buttonHoverBackColor: {
type: StringConstructor;
required: boolean;
};
buttonActiveFontColor: {
type: StringConstructor;
required: boolean;
};
buttonActiveBackColor: {
type: StringConstructor;
required: boolean;
};
linkFontColor: {
type: StringConstructor;
required: boolean;
};
linkHoverFontColor: {
type: StringConstructor;
required: boolean;
};
linkActiveFontColor: {
type: StringConstructor;
required: boolean;
};
linkVisitedFontColor: {
type: StringConstructor;
required: boolean;
};
linkFocusFontColor: {
type: StringConstructor;
required: boolean;
};
}>, {
editorWrap: Ref<HTMLElement | null, HTMLElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
activeCell: PropType<(row: number, colId: string) => boolean>;
activeCells: PropType<(startRow: number, startColId: string, endRow: number, endColId: string) => boolean>;
activeRow: PropType<(row: number) => boolean>;
activeRows: PropType<(startRow: number, endRow: number) => boolean>;
activeCol: PropType<(colId: string) => boolean>;
activeCols: PropType<(startColId: string, endColId: string) => boolean>;
beforeChange: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
afterChange: PropType<(row: number, colId: string, oldValue: any, newValue: any) => void>;
beforeClickCell: PropType<(row: number, colId: string) => boolean>;
afterClickCell: PropType<(row: number, colId: string) => void>;
clickSelect: PropType<(row: number, colId: string, selectNode: HTMLElement) => boolean>;
clickCheckbox: PropType<(row: number, colId: string, checkboxNode: HTMLElement) => boolean>;
clickButton: PropType<(row: number, colId: string, buttonNude: HTMLElement) => boolean>;
clickLink: PropType<(row: number, colId: string, linkNode: HTMLElement) => boolean>;
beforeDblClickCell: PropType<(row: number, colId: string) => boolean>;
afterDblClickCell: PropType<(row: number, colId: string) => void>;
beforeClickHeader: PropType<(row: number, colId: string) => boolean>;
afterClickHeader: PropType<(row: number, colId: string) => void>;
beforeDblClickHeader: PropType<(row: number, colId: string) => boolean>;
afterDblClickHeader: PropType<(row: number, colId: string) => void>;
beforeEditEnter: PropType<(row: number, colId: string, editorNode: HTMLElement) => boolean>;
afterEditEnter: PropType<(row: number, colId: string, editorNode: HTMLElement) => void>;
editEnding: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
clickFilter: PropType<(row: number, colId: string, filterNode: HTMLElement) => boolean>;
chooseFilter: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
paste: PropType<(startRow: number, startColId: string, clipboardText: string) => boolean>;
copy: PropType<(startRow: number, startColId: string, endRow: number, endColId: string, copyText: string) => boolean>;
resize: PropType<(colId: string) => boolean>;
keydownEditor: PropType<(event: KeyboardEvent) => boolean>;
inputEditor: PropType<(event: InputEvent) => boolean>;
keydownGrid: PropType<(event: KeyboardEvent) => boolean>;
modelValue: PropType<any[]>;
id: {
type: StringConstructor;
required: boolean;
};
columns: {
type: PropType<HGridColumn[]>;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties>;
required: boolean;
};
name: {
type: StringConstructor;
required: boolean;
};
locked: {
type: BooleanConstructor;
default: boolean;
};
lockedColor: {
type: BooleanConstructor;
default: boolean;
};
resizable: {
type: BooleanConstructor;
default: boolean;
};
redoable: {
type: BooleanConstructor;
default: boolean;
};
redoCount: {
type: NumberConstructor;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
headerVisible: {
type: BooleanConstructor;
default: boolean;
};
rownumVisible: {
type: BooleanConstructor;
default: boolean;
};
rownumSize: {
type: StringConstructor;
required: boolean;
};
rownumLockedColor: {
type: BooleanConstructor;
default: boolean;
};
statusVisible: {
type: BooleanConstructor;
default: boolean;
};
statusLockedColor: {
type: BooleanConstructor;
default: boolean;
};
selectionPolicy: {
type: PropType<SelectionPolicy | SelectionPolicyValue>;
required: boolean;
validator: (v: any) => boolean;
};
nullValue: {
type: StringConstructor;
required: boolean;
};
dateFormat: {
type: PropType<GridDateFormat | GridDateFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
monthFormat: {
type: PropType<GridMonthFormat | GridMonthFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
alterRow: {
type: BooleanConstructor;
default: boolean;
};
frozenColCount: {
type: NumberConstructor;
required: boolean;
};
frozenRowCount: {
type: NumberConstructor;
required: boolean;
};
sortable: {
type: BooleanConstructor;
default: boolean;
};
filterable: {
type: BooleanConstructor;
default: boolean;
};
allCheckable: {
type: BooleanConstructor;
default: boolean;
};
checkedValue: {
type: StringConstructor;
required: boolean;
};
uncheckedValue: {
type: StringConstructor;
required: boolean;
};
width: {
type: StringConstructor;
required: boolean;
};
height: {
type: StringConstructor;
required: boolean;
};
margin: {
type: StringConstructor;
required: boolean;
};
padding: {
type: StringConstructor;
required: boolean;
};
sizeLevel: {
type: NumberConstructor;
required: boolean;
};
verticalAlign: {
type: PropType<GridVerticalAlign | GridVerticalAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
cellFontSize: {
type: StringConstructor;
required: boolean;
};
cellMinHeight: {
type: StringConstructor;
required: boolean;
};
horizenBorderSize: {
type: NumberConstructor;
required: boolean;
};
verticalBorderSize: {
type: NumberConstructor;
required: boolean;
};
gridFontFamily: {
type: StringConstructor;
required: boolean;
};
editorFontFamily: {
type: StringConstructor;
required: boolean;
};
overflowWrap: {
type: StringConstructor;
required: boolean;
};
wordBreak: {
type: StringConstructor;
required: boolean;
};
whiteSpace: {
type: StringConstructor;
required: boolean;
};
linkHasUnderLine: {
type: BooleanConstructor;
required: boolean;
};
invertColor: {
type: BooleanConstructor;
default: boolean;
};
color: {
type: PropType<ColorSet | string>;
required: boolean;
validator: (v: any) => boolean;
};
gridBorderColor: {
type: StringConstructor;
required: boolean;
};
headerCellBackColor: {
type: StringConstructor;
required: boolean;
};
headerCellBorderColor: {
type: StringConstructor;
required: boolean;
};
headerCellFontColor: {
type: StringConstructor;
required: boolean;
};
footerCellBackColor: {
type: StringConstructor;
required: boolean;
};
footerCellBorderColor: {
type: StringConstructor;
required: boolean;
};
footerCellFontColor: {
type: StringConstructor;
required: boolean;
};
bodyBackColor: {
type: StringConstructor;
required: boolean;
};
bodyCellBackColor: {
type: StringConstructor;
required: boolean;
};
bodyCellBorderColor: {
type: StringConstructor;
required: boolean;
};
bodyCellFontColor: {
type: StringConstructor;
required: boolean;
};
editorBackColor: {
type: StringConstructor;
required: boolean;
};
editorFontColor: {
type: StringConstructor;
required: boolean;
};
selectCellBackColor: {
type: StringConstructor;
required: boolean;
};
selectCellFontColor: {
type: StringConstructor;
required: boolean;
};
selectColBackColor: {
type: StringConstructor;
required: boolean;
};
selectColFontColor: {
type: StringConstructor;
required: boolean;
};
selectRowBackColor: {
type: StringConstructor;
required: boolean;
};
selectRowFontColor: {
type: StringConstructor;
required: boolean;
};
mouseoverCellBackColor: {
type: StringConstructor;
required: boolean;
};
mouseoverCellFontColor: {
type: StringConstructor;
required: boolean;
};
lockCellBackColor: {
type: StringConstructor;
required: boolean;
};
lockCellFontColor: {
type: StringConstructor;
required: boolean;
};
alterRowBackColor: {
type: StringConstructor;
required: boolean;
};
alterRowFontColor: {
type: StringConstructor;
required: boolean;
};
buttonFontColor: {
type: StringConstructor;
required: boolean;
};
buttonBorderColor: {
type: StringConstructor;
required: boolean;
};
buttonBackColor: {
type: StringConstructor;
required: boolean;
};
buttonHoverFontColor: {
type: StringConstructor;
required: boolean;
};
buttonHoverBackColor: {
type: StringConstructor;
required: boolean;
};
buttonActiveFontColor: {
type: StringConstructor;
required: boolean;
};
buttonActiveBackColor: {
type: StringConstructor;
required: boolean;
};
linkFontColor: {
type: StringConstructor;
required: boolean;
};
linkHoverFontColor: {
type: StringConstructor;
required: boolean;
};
linkActiveFontColor: {
type: StringConstructor;
required: boolean;
};
linkVisitedFontColor: {
type: StringConstructor;
required: boolean;
};
linkFocusFontColor: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
bindAttrs: ComputedRef<Record<string, string>>;
responsiveClassList: Ref<string[], string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change")[], "mounted" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
activeCell: PropType<(row: number, colId: string) => boolean>;
activeCells: PropType<(startRow: number, startColId: string, endRow: number, endColId: string) => boolean>;
activeRow: PropType<(row: number) => boolean>;
activeRows: PropType<(startRow: number, endRow: number) => boolean>;
activeCol: PropType<(colId: string) => boolean>;
activeCols: PropType<(startColId: string, endColId: string) => boolean>;
beforeChange: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
afterChange: PropType<(row: number, colId: string, oldValue: any, newValue: any) => void>;
beforeClickCell: PropType<(row: number, colId: string) => boolean>;
afterClickCell: PropType<(row: number, colId: string) => void>;
clickSelect: PropType<(row: number, colId: string, selectNode: HTMLElement) => boolean>;
clickCheckbox: PropType<(row: number, colId: string, checkboxNode: HTMLElement) => boolean>;
clickButton: PropType<(row: number, colId: string, buttonNude: HTMLElement) => boolean>;
clickLink: PropType<(row: number, colId: string, linkNode: HTMLElement) => boolean>;
beforeDblClickCell: PropType<(row: number, colId: string) => boolean>;
afterDblClickCell: PropType<(row: number, colId: string) => void>;
beforeClickHeader: PropType<(row: number, colId: string) => boolean>;
afterClickHeader: PropType<(row: number, colId: string) => void>;
beforeDblClickHeader: PropType<(row: number, colId: string) => boolean>;
afterDblClickHeader: PropType<(row: number, colId: string) => void>;
beforeEditEnter: PropType<(row: number, colId: string, editorNode: HTMLElement) => boolean>;
afterEditEnter: PropType<(row: number, colId: string, editorNode: HTMLElement) => void>;
editEnding: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
clickFilter: PropType<(row: number, colId: string, filterNode: HTMLElement) => boolean>;
chooseFilter: PropType<(row: number, colId: string, oldValue: any, newValue: any) => boolean>;
paste: PropType<(startRow: number, startColId: string, clipboardText: string) => boolean>;
copy: PropType<(startRow: number, startColId: string, endRow: number, endColId: string, copyText: string) => boolean>;
resize: PropType<(colId: string) => boolean>;
keydownEditor: PropType<(event: KeyboardEvent) => boolean>;
inputEditor: PropType<(event: InputEvent) => boolean>;
keydownGrid: PropType<(event: KeyboardEvent) => boolean>;
modelValue: PropType<any[]>;
id: {
type: StringConstructor;
required: boolean;
};
columns: {
type: PropType<HGridColumn[]>;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties>;
required: boolean;
};
name: {
type: StringConstructor;
required: boolean;
};
locked: {
type: BooleanConstructor;
default: boolean;
};
lockedColor: {
type: BooleanConstructor;
default: boolean;
};
resizable: {
type: BooleanConstructor;
default: boolean;
};
redoable: {
type: BooleanConstructor;
default: boolean;
};
redoCount: {
type: NumberConstructor;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
headerVisible: {
type: BooleanConstructor;
default: boolean;
};
rownumVisible: {
type: BooleanConstructor;
default: boolean;
};
rownumSize: {
type: StringConstructor;
required: boolean;
};
rownumLockedColor: {
type: BooleanConstructor;
default: boolean;
};
statusVisible: {
type: BooleanConstructor;
default: boolean;
};
statusLockedColor: {
type: BooleanConstructor;
default: boolean;
};
selectionPolicy: {
type: PropType<SelectionPolicy | SelectionPolicyValue>;
required: boolean;
validator: (v: any) => boolean;
};
nullValue: {
type: StringConstructor;
required: boolean;
};
dateFormat: {
type: PropType<GridDateFormat | GridDateFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
monthFormat: {
type: PropType<GridMonthFormat | GridMonthFormatValue>;
required: boolean;
validator: (v: any) => boolean;
};
alterRow: {
type: BooleanConstructor;
default: boolean;
};
frozenColCount: {
type: NumberConstructor;
required: boolean;
};
frozenRowCount: {
type: NumberConstructor;
required: boolean;
};
sortable: {
type: BooleanConstructor;
default: boolean;
};
filterable: {
type: BooleanConstructor;
default: boolean;
};
allCheckable: {
type: BooleanConstructor;
default: boolean;
};
checkedValue: {
type: StringConstructor;
required: boolean;
};
uncheckedValue: {
type: StringConstructor;
required: boolean;
};
width: {
type: StringConstructor;
required: boolean;
};
height: {
type: StringConstructor;
required: boolean;
};
margin: {
type: StringConstructor;
required: boolean;
};
padding: {
type: StringConstructor;
required: boolean;
};
sizeLevel: {
type: NumberConstructor;
required: boolean;
};
verticalAlign: {
type: PropType<GridVerticalAlign | GridVerticalAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
cellFontSize: {
type: StringConstructor;
required: boolean;
};
cellMinHeight: {
type: StringConstructor;
required: boolean;
};
horizenBorderSize: {
type: NumberConstructor;
required: boolean;
};
verticalBorderSize: {
type: NumberConstructor;
required: boolean;
};
gridFontFamily: {
type: StringConstructor;
required: boolean;
};
editorFontFamily: {
type: StringConstructor;
required: boolean;
};
overflowWrap: {
type: StringConstructor;
required: boolean;
};
wordBreak: {
type: StringConstructor;
required: boolean;
};
whiteSpace: {
type: StringConstructor;
required: boolean;
};
linkHasUnderLine: {
type: BooleanConstructor;
required: boolean;
};
invertColor: {
type: BooleanConstructor;
default: boolean;
};
color: {
type: PropType<ColorSet | string>;
required: boolean;
validator: (v: any) => boolean;
};
gridBorderColor: {
type: StringConstructor;
required: boolean;
};
headerCellBackColor: {
type: StringConstructor;
required: boolean;
};
headerCellBorderColor: {
type: StringConstructor;
required: boolean;
};
headerCellFontColor: {
type: StringConstructor;
required: boolean;
};
footerCellBackColor: {
type: StringConstructor;
required: boolean;
};
footerCellBorderColor: {
type: StringConstructor;
required: boolean;
};
footerCellFontColor: {
type: StringConstructor;
required: boolean;
};
bodyBackColor: {
type: StringConstructor;
required: boolean;
};
bodyCellBackColor: {
type: StringConstructor;
required: boolean;
};
bodyCellBorderColor: {
type: StringConstructor;
required: boolean;
};
bodyCellFontColor: {
type: StringConstructor;
required: boolean;
};
editorBackColor: {
type: StringConstructor;
required: boolean;
};
editorFontColor: {
type: StringConstructor;
required: boolean;
};
selectCellBackColor: {
type: StringConstructor;
required: boolean;
};
selectCellFontColor: {
type: StringConstructor;
required: boolean;
};
selectColBackColor: {
type: StringConstructor;
required: boolean;
};
selectColFontColor: {
type: StringConstructor;
required: boolean;
};
selectRowBackColor: {
type: StringConstructor;
required: boolean;
};
selectRowFontColor: {
type: StringConstructor;
required: boolean;
};
mouseoverCellBackColor: {
type: StringConstructor;
required: boolean;
};
mouseoverCellFontColor: {
type: StringConstructor;
required: boolean;
};
lockCellBackColor: {
type: StringConstructor;
required: boolean;
};
lockCellFontColor: {
type: StringConstructor;
required: boolean;
};
alterRowBackColor: {
type: StringConstructor;
required: boolean;
};
alterRowFontColor: {
type: StringConstructor;
required: boolean;
};
buttonFontColor: {
type: StringConstructor;
required: boolean;
};
buttonBorderColor: {
type: StringConstructor;
required: boolean;
};
buttonBackColor: {
type: StringConstructor;
required: boolean;
};
buttonHoverFontColor: {
type: StringConstructor;
required: boolean;
};
buttonHoverBackColor: {
type: StringConstructor;
required: boolean;
};
buttonActiveFontColor: {
type: StringConstructor;
required: boolean;
};
buttonActiveBackColor: {
type: StringConstructor;
required: boolean;
};
linkFontColor: {
type: StringConstructor;
required: boolean;
};
linkHoverFontColor: {
type: StringConstructor;
required: boolean;
};
linkActiveFontColor: {
type: StringConstructor;
required: boolean;
};
linkVisitedFontColor: {
type: StringConstructor;
required: boolean;
};
linkFocusFontColor: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
invertColor: boolean;
linkHasUnderLine: boolean;
resizable: boolean;
sortable: boolean;
filterable: boolean;
locked: boolean;
lockedColor: boolean;
visible: boolean;
redoable: boolean;
headerVisible: boolean;
rownumVisible: boolean;
rownumLockedColor: boolean;
statusVisible: boolean;
statusLockedColor: boolean;
alterRow: boolean;
allCheckable: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HGridClientOnly: Component;

/**
 * This is config about the column.
 */
export declare interface HGridColumn {
    /**
     * Required value. It is the id of the column.
     */
    id: string;
    /**
     * The name of the column. If null, the grid Id is inserted.
     */
    name?: string;
    /**
     * Header text value. Use ';' as the delimiter. Empty values are automatically merged.
     */
    header?: string;
    /**
     * Insert the footer using ';' as the delimiter. General text: Insert the string as text in the footer.
     * $$MAX: Calculate and display the maximum value in the footer.
     * $$MIN: Calculate and display the minimum value in the footer.
     * $$SUM: Calculate and display the sum in the footer.
     * $$AVG: Calculate and display the average in the footer (excluding null).
     */
    footer?: string;
    /**
     * Sets the type of the column.
     * text: Text input type. A textarea input box is created on double click.
     * number: Number input type. An input number type is created on double click.
     * date: Date input type. An input date type is created on double click.
     * month: Month input type. An input month type is created on double click.
     * mask: Text input type that matches the format. An input text type is created on double click. Controlled by the format attribute.
     * select: Input select type. Options are received when inserting values. Ex) [{value:"val1", text:"text1", selected:true},{value:"val2", text:"text2"}..]
     * checkbox: Input checkbox type. Checked if it matches the checkedValue of the grid info, unchecked otherwise.
     * button: Button type. The inserted value is displayed as the innerText of the button. If there is no value, the button is not created.
     * link: a tag. Insert the value as an object in the form {text:"text", value:"https://..", target:"_blank"}. The text is set as innerText, the value as href, and the target as target.
     * code: A type that cannot have or display values other than the specified codes. If nullValue is not in the codes, it is not allowed. Empty values are stored as default-code.
     */
    dataType?: string;
    /**
     * If untarget is true, the cells in this column cannot be selected.
     */
    untarget?: boolean;
    /**
     * If rowMerge is true, this column merges rows based on the cell above if the value, data-type, and format are the same.
     */
    rowMerge?: boolean;
    /**
     * If colMerge is true, this column merges columns based on the cell in front if the value, data-type, and format are the same.
     */
    colMerge?: boolean;
    /**
     * If visible is false, this column's width becomes 0 and size cannot be changed (hidden).
     */
    visible?: boolean;
    /**
     * If required is true, this column can be checked for input using the checkRequired() method.
     */
    required?: boolean;
    /**
     * If resizable is false, the user cannot change the width size of this column.
     */
    resizable?: boolean;
    /**
     * Indicates whether the user can use the sorting feature for this column.
     */
    sortable?: boolean;
    /**
     * Indicates whether the user can use the filtering feature for this column.
     */
    filterable?: boolean;
    /**
     * The width of the column. Insert cssText. If only a number is entered, the unit is 'px'.
     */
    width?: string;
    /**
     * Sets the select width size for this column. Insert cssText. The unit can only be px or %.
     */
    selectSize?: string;
    /**
     * If locked is true, the cells in this column cannot be changed.
     */
    locked?: boolean;
    /**
     * If lockedColor is true, the cells in this column will display a background color indicating the locked state when locked.
     */
    lockedColor?: boolean;
    /**
     * Sets the format for data-type mask, number.
     * Mask format: A: Uppercase letter, a: Lowercase letter, 9: Number, others: Matching character.
     * Ex) format: "AAA-991", value: "ABC-123456" => result: "ABC-12"
     *
     * Number format:
     * Integer part:
     * "#,###": Display with thousand separators, 0 is displayed as null, "#,##0": Display with thousand separators,
     * 0 is displayed as 0, "#": Display as is, 0 is displayed as null, "0": Display as is, 0 is displayed as 0.
     * Decimal part: "#": Display if present, "0": Display as 0 if not present.
     * Others: Characters before and after are displayed as is, and if the last character is "%", it is displayed as a percentage.
     * Ex1) format: "#,##0.## $", number: 1234.1234 => result: "1,234.12 $"
     * Ex2) format: "0%", number: 0.12 => result: "12%"
     */
    format?: string;
    /**
     * Valid only for columns with data-type code. Sets codes separated by ";". This column can only have the specified code values.
     * Ex) "US;KR;JP" => Can only have the values "US", "KR", "JP"
     */
    codes?: string;
    /**
     * Valid only for columns with data-type code. If a column with data-type code has no value, the default-code is used as the value instead of grid.info's nullValue.
     */
    defaultCode?: string;
    /**
     * Valid only for columns with data-type text. Sets the maximum string length that can be inserted into the value. Enter only positive integers.
     */
    maxLength?: number;
    /**
     * Valid only for columns with data-type text. Sets the maximum byte size of the string that can be inserted into the value. Enter only positive integers.
     * Byte size criteria are set with vg.lessoreq0x7ffByte, vg.lessoreq0xffffByte, vg.greater0xffffByte.
     * lessoreq0x7ffByte: Characters with charCode less than or equal to 0x7FF, default value is 2 (common symbols or English alphabet based on UTF-8).
     * lessoreq0xffffByte: Characters with charCode less than or equal to 0xFFFF, default value is 3 (additional alphabets such as Latin based on UTF-8).
     * greater0xffffByte: Characters with charCode greater than 0xFFFF, default value is 4 (emoji, Korean, Chinese, Japanese, etc. based on UTF-8).
     */
    maxByte?: number;
    /**
     * Valid only for columns with data-type number. Sets the maximum value. If a value exceeding this is entered, it is stored as the maximum value. Enter only numbers.
     */
    maxNumber?: number;
    /**
     * Valid only for columns with data-type number. Sets the minimum value. If a value below this is entered, it is stored as the minimum value. Enter only numbers.
     */
    minNumber?: number;
    /**
     * Valid only for columns with data-type number. Specifies the rounding place.
     * roundNumber positive integer: Specifies the decimal place to round.
     * roundNumber negative integer: Specifies the integer place to round.
     * Ex) roundNumber: 2, number: 1234.1234 => result: 1234.12
     * Ex) roundNumber: -2, number: 1234.1234 => result: 1200
     */
    roundNumber?: number;
    /**
     * Sets the align of the column. Choose from 'left', 'center', 'right'. If no value is specified, the default align follows the data-type.
     * text, mask: left, number: right, date, month, code, select, checkbox, button, link: center.
     */
    align?: GridAlign | GridAlignValue;
    /**
     * Sets the default vertical-align of the column. Choose from 'top', 'center', 'bottom'. If no value is specified, it defaults to center.
     */
    verticalAlign?: GridVerticalAlign | GridVerticalAlignValue;
    /**
     * Sets the default overflow-wrap of the column. Enter the overflow-wrap in cssText.
     */
    overflowWrap?: string;
    /**
     * Sets the default word-break of the column. Enter the word-break in cssText.
     */
    wordBreak?: string;
    /**
     * Sets the default white-space of the column. Enter the white-space in cssText.
     */
    whiteSpace?: string;
    /**
     * Sets the background color of the column. Insert the 16-digit color code in cssText. Ex) "#ffffff"
     */
    backColor?: string;
    /**
     * Sets the font color of the column. Insert the 16-digit color code in cssText. Ex) "#ffffff"
     */
    fontColor?: string;
    /**
     * If fontBold is true, the innerText of the column's cells will be bold.
     */
    fontBold?: boolean;
    /**
     * If fontItalic is true, the innerText of the column's cells will be italic.
     */
    fontItalic?: boolean;
    /**
     * If fontThruline is true, the innerText of the column's cells will have a strikethrough.
     */
    fontThruline?: boolean;
    /**
     * If fontUnderline is true, the innerText of the column's cells will be underlined.
     */
    fontUnderline?: boolean;
}

/**
 * Provides various methods to manipulate and manage a Vanillagrid instance.
 *
 * - This interface includes over 200 methods for handling grid structure, data,
 *   filtering, sorting, appearance, and user interactions.
 * - A `GridMethods` instance can be retrieved using `vg.getGrid({gridId})`.
 * - It allows users to dynamically modify grid properties, update cell values,
 *   and customize the grid's behavior through predefined methods.
 *
 * ### Key Features:
 * - Manage grid headers, footers, rows, and columns.
 * - Load and retrieve data as JSON.
 * - Apply filters, sorting, and styling dynamically.
 * - Control grid visibility, locking, and resizing.
 * - Undo and redo changes within the grid.
 *
 * ### Example usage:
 * ```typescript
 * const grid = vg.getGrid('gridId');
 * grid.setHeaderText('col1', 'New Header');
 * grid.setCellValue(1, 'col1', 'Updated Value');
 * ```
 */
export declare interface HGridMethods extends ComponentMethods, Omit<GridMethods, 'isGridVisible' | 'setGridVisible'> {
    /**
     * Returns the type of the grid.
     */
    getType(): 'grid';
    /**
     * Extracts the current grid content as a `DataModel` instance.
     *
     * - Converts all current grid rows into a `DataModel`.
     * - Each row becomes a record in the `DataModel`.
     * - Columns are inferred automatically from the grid's structure or cell values.
     *
     * @returns A `DataModel` instance representing the current grid content.
     */
    getDataModel(): InterfaceDataModel<Record<string, any>>;
    /**
     * Loads data into the grid using a `DataModel` instance.
     *
     * - Converts the first `getRowCount()` rows of the provided `DataModel` into key-value records.
     * - These records are then inserted into the grid.
     * - Grid is cleared before new data is loaded.
     *
     * @param dataModel A `DataModel` object representing the rows to load into the grid.
     */
    setDataModel<T extends Record<string, any>>(dataModel: InterfaceDataModel<T>): void;
    /**
     * Loads data into the grid.
     *
     * - Supports three different data formats:
     *   1. **Key-Value Format**: An array of objects where each object represents a row with column-value pairs.
     *   2. **Datas Format**: A 2D array of cell objects, each containing `{ colId, value }`.
     *   3. **DataModel Format**: A `DataModel` instance whose rows are inserted into the grid.
     * - Before loading, the grid is automatically cleared.
     *
     * ### Example Usage:
     * ```ts
     * // 1. Key-Value Format
     * grid.load([
     *   { col1: 'value1-1', col2: 'value1-2' },
     *   { col1: 'value2-1', col2: 'value2-2' }
     * ]);
     *
     * // 2. Datas Format
     * grid.load([
     *   [{ colId: 'col1', value: 'value1-1' }, { colId: 'col2', value: 'value1-2' }],
     *   [{ colId: 'col1', value: 'value2-1' }, { colId: 'col2', value: 'value2-2' }]
     * ]);
     *
     * // 3. DataModel Format
     * const model = new hison.data.DataModel();
     * model.setColumns(['col1', 'col2']);
     * model.addRow({ col1: 'value1-1', col2: 'value1-2' });
     * grid.load(model);
     * ```
     *
     * @param keyValueOrDatas The data to load into the grid.
     * @returns `true` if the data was successfully loaded.
     */
    load<T extends Record<string, any>>(keyValueOrDatas: Record<string, any> | Record<string, any>[] | InterfaceDataModel<T>): boolean;
}

export declare const HImagebox: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
imgStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<AttachedFileItem | null>;
default: null;
};
attId: {
type: StringConstructor;
default: string;
};
addButtonText: {
type: StringConstructor;
default: string;
};
removeButtonText: {
type: StringConstructor;
default: string;
};
modifyButtonText: {
type: StringConstructor;
default: string;
};
placeholder: {
type: StringConstructor;
default: string;
};
enableDrop: {
type: BooleanConstructor;
default: boolean;
};
allowedTypes: {
type: PropType<string | string[]>;
default: () => string[];
};
disallowedTypes: {
type: PropType<string | string[]>;
default: undefined;
};
maxFileSize: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
onDisallowedType: PropType<(currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void>;
onMaxFileSizeExceeded: PropType<(file: File, size: number, max: number) => void>;
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
fileInputRef: Ref<HTMLInputElement | null, HTMLInputElement | null>;
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
imgStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<AttachedFileItem | null>;
default: null;
};
attId: {
type: StringConstructor;
default: string;
};
addButtonText: {
type: StringConstructor;
default: string;
};
removeButtonText: {
type: StringConstructor;
default: string;
};
modifyButtonText: {
type: StringConstructor;
default: string;
};
placeholder: {
type: StringConstructor;
default: string;
};
enableDrop: {
type: BooleanConstructor;
default: boolean;
};
allowedTypes: {
type: PropType<string | string[]>;
default: () => string[];
};
disallowedTypes: {
type: PropType<string | string[]>;
default: undefined;
};
maxFileSize: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
onDisallowedType: PropType<(currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void>;
onMaxFileSizeExceeded: PropType<(file: File, size: number, max: number) => void>;
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onBlur?: ((...args: any[]) => any) | undefined;
onChange?: ((...args: any[]) => any) | undefined;
onFocus?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
onAdd?: ((...args: any[]) => any) | undefined;
onRemove?: ((...args: any[]) => any) | undefined;
"onPreview-click"?: ((...args: any[]) => any) | undefined;
"onPreview-dblclick"?: ((...args: any[]) => any) | undefined;
"onPreview-contextmenu"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerenter"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerleave"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerdown"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerup"?: ((...args: any[]) => any) | undefined;
}> & {}>;
imgStyle: ComputedRef<string | CSSProperties | CSSProperties[]>;
imageValue: Ref<    {
fileId?: string | undefined;
fileName: string;
fileSize?: number | undefined;
filePath?: string | undefined;
extension?: string | undefined;
file?: {
readonly lastModified: number;
readonly name: string;
readonly webkitRelativePath: string;
readonly size: number;
readonly type: string;
arrayBuffer: () => Promise<ArrayBuffer>;
bytes: () => Promise<Uint8Array<ArrayBuffer>>;
slice: (start?: number, end?: number, contentType?: string) => Blob;
stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
text: () => Promise<string>;
} | undefined;
isNew?: boolean | undefined;
isDeleted?: boolean | undefined;
} | null, AttachedFileItem | {
fileId?: string | undefined;
fileName: string;
fileSize?: number | undefined;
filePath?: string | undefined;
extension?: string | undefined;
file?: {
readonly lastModified: number;
readonly name: string;
readonly webkitRelativePath: string;
readonly size: number;
readonly type: string;
arrayBuffer: () => Promise<ArrayBuffer>;
bytes: () => Promise<Uint8Array<ArrayBuffer>>;
slice: (start?: number, end?: number, contentType?: string) => Blob;
stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
text: () => Promise<string>;
} | undefined;
isNew?: boolean | undefined;
isDeleted?: boolean | undefined;
} | null>;
imageboxMethods: Ref<    {
getType: () => "imagebox";
getEditMode: () => EditModeValue;
setEditMode: (mode: EditMode | EditModeValue) => void;
getValue: () => AttachedFileItem | null;
setValue: (attachedFileItem: AttachedFileItem) => void;
getDataModel: () => InterfaceDataModel<AttachedFileItem> | null;
setDataModel: <T extends AttachedFileItem>(dataModel: InterfaceDataModel<T>) => void;
load: <T extends Record<string, any>>(data: AttachedFileItem | Record<string, any> | InterfaceDataModel<T>) => void;
getAttId: () => string;
setAttId: (attId: string) => void;
getAddButtonText: () => string;
setAddButtonText: (addButtonText: string) => void;
getRemoveButtonText: () => string;
setRemoveButtonText: (removeButtonText: string) => void;
getModifyButtonText: () => string;
setModifyButtonText: (val: string) => void;
getPlaceholder: () => string;
setPlaceholder: (placeholder: string) => void;
isEnableDrop: () => boolean;
setEnableDrop: (enableDrop: boolean) => void;
getAllowedTypes: () => string[];
setAllowedTypes: (allowedTypes: string[]) => void;
getDisallowedTypes: () => string[];
setDisallowedTypes: (disallowedTypes: string[]) => void;
getMaxFileSize: () => number;
setMaxFileSize: (maxFileSize: number) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
setOnDisallowedType: (onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void) => void;
setOnMaxFileSizeExceeded: (onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void) => void;
isModified: () => boolean;
setModified: (modified: boolean) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null, HImageboxMethods | {
getType: () => "imagebox";
getEditMode: () => EditModeValue;
setEditMode: (mode: EditMode | EditModeValue) => void;
getValue: () => AttachedFileItem | null;
setValue: (attachedFileItem: AttachedFileItem) => void;
getDataModel: () => InterfaceDataModel<AttachedFileItem> | null;
setDataModel: <T extends AttachedFileItem>(dataModel: InterfaceDataModel<T>) => void;
load: <T extends Record<string, any>>(data: AttachedFileItem | Record<string, any> | InterfaceDataModel<T>) => void;
getAttId: () => string;
setAttId: (attId: string) => void;
getAddButtonText: () => string;
setAddButtonText: (addButtonText: string) => void;
getRemoveButtonText: () => string;
setRemoveButtonText: (removeButtonText: string) => void;
getModifyButtonText: () => string;
setModifyButtonText: (val: string) => void;
getPlaceholder: () => string;
setPlaceholder: (placeholder: string) => void;
isEnableDrop: () => boolean;
setEnableDrop: (enableDrop: boolean) => void;
getAllowedTypes: () => string[];
setAllowedTypes: (allowedTypes: string[]) => void;
getDisallowedTypes: () => string[];
setDisallowedTypes: (disallowedTypes: string[]) => void;
getMaxFileSize: () => number;
setMaxFileSize: (maxFileSize: number) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
setOnDisallowedType: (onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void) => void;
setOnMaxFileSizeExceeded: (onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void) => void;
isModified: () => boolean;
setModified: (modified: boolean) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
visibleClass: ComputedRef<"" | "hison-display-none">;
editModeClass: ComputedRef<string>;
borderClass: ComputedRef<"" | "hison-border">;
responsiveClassList: Ref<string[], string[]>;
buttonClassList: ComputedRef<string[]>;
disable: ComputedRef<boolean>;
readonly: ComputedRef<boolean>;
addButtonText: Ref<string, string>;
modifyButtonText: Ref<string, string>;
removeButtonText: Ref<string, string>;
placeholder: Ref<string, string>;
isDragging: Ref<boolean, boolean>;
previewUrl: Ref<string | null, string | null>;
showAddButton: ComputedRef<boolean>;
showRemoveButton: ComputedRef<boolean>;
accept: ComputedRef<string | undefined>;
tabIndex: Ref<number | null, number | null>;
handleDragEnter: (e: DragEvent) => void;
handleDrop: (e: DragEvent) => void;
openFileDialog: () => void;
removeImage: () => void;
onFileChange: (e: Event) => void;
onPreviewClick: (e: MouseEvent) => void;
onPreviewDblClick: (e: MouseEvent) => void;
onPreviewContextMenu: (e: MouseEvent) => void;
onPreviewPointerEnter: (e: PointerEvent) => void;
onPreviewPointerLeave: (e: PointerEvent) => void;
onPreviewPointerDown: (e: PointerEvent) => void;
onPreviewPointerUp: (e: PointerEvent) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("add" | "mounted" | "blur" | "change" | "focus" | "responsive-change" | "update:modelValue" | "remove" | "preview-click" | "preview-dblclick" | "preview-contextmenu" | "preview-pointerenter" | "preview-pointerleave" | "preview-pointerdown" | "preview-pointerup")[], "add" | "mounted" | "blur" | "change" | "focus" | "responsive-change" | "update:modelValue" | "remove" | "preview-click" | "preview-dblclick" | "preview-contextmenu" | "preview-pointerenter" | "preview-pointerleave" | "preview-pointerdown" | "preview-pointerup", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
imgStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<AttachedFileItem | null>;
default: null;
};
attId: {
type: StringConstructor;
default: string;
};
addButtonText: {
type: StringConstructor;
default: string;
};
removeButtonText: {
type: StringConstructor;
default: string;
};
modifyButtonText: {
type: StringConstructor;
default: string;
};
placeholder: {
type: StringConstructor;
default: string;
};
enableDrop: {
type: BooleanConstructor;
default: boolean;
};
allowedTypes: {
type: PropType<string | string[]>;
default: () => string[];
};
disallowedTypes: {
type: PropType<string | string[]>;
default: undefined;
};
maxFileSize: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
onDisallowedType: PropType<(currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void>;
onMaxFileSizeExceeded: PropType<(file: File, size: number, max: number) => void>;
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onBlur?: ((...args: any[]) => any) | undefined;
onChange?: ((...args: any[]) => any) | undefined;
onFocus?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
onAdd?: ((...args: any[]) => any) | undefined;
onRemove?: ((...args: any[]) => any) | undefined;
"onPreview-click"?: ((...args: any[]) => any) | undefined;
"onPreview-dblclick"?: ((...args: any[]) => any) | undefined;
"onPreview-contextmenu"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerenter"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerleave"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerdown"?: ((...args: any[]) => any) | undefined;
"onPreview-pointerup"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
visible: boolean;
tabIndex: string | number | null;
placeholder: string;
modelValue: AttachedFileItem | null;
editMode: "editable" | "disable" | "readonly" | EditMode;
attId: string;
addButtonText: string;
removeButtonText: string;
enableDrop: boolean;
allowedTypes: string | string[];
disallowedTypes: string | string[];
maxFileSize: number;
modifyButtonText: string;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HImageboxClientOnly: Component;

/**
 * Interface for runtime control of `<HImagebox>` component.
 *
 * This interface provides a complete set of methods for dynamically controlling and querying the state
 * of an HImagebox instance in hisonvue. All methods are accessible via `hison.vue.getInput(id)` or
 * on the instance emitted via the `mounted` event.
 *
 * **Typical use cases include:**
 * - Changing edit mode, button text, allowed file types, or drag-and-drop support at runtime
 * - Setting the image programmatically (e.g., for editing or resetting forms)
 * - Integrating with backend logic to preload, update, or clear the image state
 * - Customizing validation or error handling logic for file type or file size checks
 * - Dynamically updating UI text such as placeholder or button labels in response to user actions
 * - Managing attachment group IDs for file association with backend records
 *
 * :::example
 * ```ts
 * // Get runtime methods from hison.vue
 * const imagebox = hison.vue.getInput('avatarBox') as HImageboxMethods
 *
 * // Make the component readonly
 * imagebox.setEditMode('readonly')
 *
 * // Set allowed file types to PNG only
 * imagebox.setAllowedTypes(['image/png'])
 *
 * // Change add button label at runtime
 * imagebox.setAddButtonText('Upload Photo')
 *
 * // Replace the image with a new uploaded file
 * imagebox.setValue({
 *   fileName: 'profile.png',
 *   file: someFileObj,
 *   fileSize: someFileObj.size,
 *   extension: 'png',
 *   isNew: true
 * })
 *
 * // Attach a custom handler for max file size exceeded
 * imagebox.setOnMaxFileSizeExceeded((file, size, max) => {
 *   alert(`File too large! Max allowed: ${max} bytes`)
 * })
 *
 * // Programmatically focus the add button
 * imagebox.focus()
 * ```
 * :::
 *
 * **Method groups:**
 * - **Edit Mode & Visibility**: Control user interaction and UI state
 * - **Image Value**: Get or set the attached image file (including clearing or preloading)
 * - **File Upload Options**: Allowed/disallowed types, file size, drag-and-drop, validation handlers
 * - **UI Labels & Placeholders**: Set button labels or placeholder dynamically
 * - **Attachment Grouping**: Manage `attId` for backend association
 * - **State Query**: Check if the image box has been modified
 *
 * All setters update the internal state and UI instantly.
 */
export declare interface HImageboxMethods extends ComponentMethods {
    /**
     * Returns the type of this component instance.
     * Always returns `'imagebox'` for `<HImagebox>`.
     */
    getType(): 'imagebox';
    /**
     * Gets the current edit mode of the image box.
     *
     * - `'editable'`: Full editing (add/delete) enabled
     * - `'readonly'`: View only, image file actions hidden
     * - `'disable'`: Completely disabled, grayed out
     */
    getEditMode(): EditModeValue;
    /**
     * Sets the edit mode of the image box.
     *
     * - `'editable'`: Allows adding/removing image file
     * - `'readonly'`: Disables all image file operations but keeps UI visible
     * - `'disable'`: Fully disables the UI (input, buttons)
     *
     * @param mode - The new edit mode
     */
    setEditMode(mode: EditMode | EditModeValue): void;
    /**
     * Returns the current (visible, not deleted) image file.
     *
     * file is an object conforming to `AttachedFileItem`.
     * Files marked `isDeleted: true` are excluded.
     *
     * @returns The current list of image file.
     */
    getValue(): AttachedFileItem | null;
    /**
     * Sets the internal image file to the provided value.
     *
     * - The list will be displayed immediately and emitted via `update:modelValue`.
     * - Use this to reset, replace, or synchronize the image file with backend data.
     *
     * @param attachedFileItem - The new image file.
     */
    setValue(attachedFileItem: AttachedFileItem): void;
    /**
     * Converts the current editor content into a `DataModel` instance.
     *
     * - Returns a new `DataModel` where each property of `AttachedFileItem`
     *   becomes a column, and a single row represents the editor state.
     *
     * @returns A `DataModel<AttachedFileItem>` containing the editor's current data.
     */
    getDataModel(): InterfaceDataModel<AttachedFileItem> | null;
    /**
     * Populates the editor using a `DataModel` instance.
     *
     * - Extracts values from the first row of the `DataModel`, if available.
     * - Uses the values from columns like `html`, `plainText`, `links`, etc. to restore editor content.
     *
     * @param dataModel A `DataModel` whose first row maps to `AttachedFileItem` structure.
     */
    setDataModel<T extends AttachedFileItem>(dataModel: InterfaceDataModel<T>): void;
    /**
     * Loads editor content from either a `AttachedFileItem` object or a compatible `DataModel`.
     *
     * - Accepts plain `AttachedFileItem`, raw object, or `DataModel`.
     * - Automatically determines how to process the input and restores the editor accordingly.
     *
     * @param data Editor content to load, in `AttachedFileItem` or `DataModel` form.
     */
    load<T extends Record<string, any>>(data: AttachedFileItem | Record<string, any> | InterfaceDataModel<T>): void;
    /**
     * Returns the current `attId` (attachment group ID).
     *
     * Used to group image file logically, often for backend APIs.
     */
    getAttId(): string;
    /**
     * Sets the `attId` (attachment group ID).
     *
     * - Use to associate this image box with a different group in your backend.
     * - Has no effect on UI, but is included in emitted file info.
     *
     * @param attId - The new attachment group ID.
     */
    setAttId(attId: string): void;
    /**
     * Gets the text content currently shown on the add/upload button.
     *
     * - Corresponds to `addButtonText` prop.
     */
    getAddButtonText(): string;
    /**
     * Sets the text shown on the add/upload button.
     *
     * - Supports multiline via `\n` (rendered as `<br>`).
     * - If an `add-button` slot is used, this will have no effect.
     *
     * @param addButtonText - New button text
     */
    setAddButtonText(addButtonText: string): void;
    /**
     * Gets the text content currently shown on the remove/delete button.
     *
     * - Corresponds to `removeButtonText` prop.
     */
    getRemoveButtonText(): string;
    /**
     * Sets the text shown on the remove/delete button.
     *
     * - Supports multiline via `\n` (rendered as `<br>`).
     * - If a `remove-button` slot is used, this will have no effect.
     *
     * @param removeButtonText - New button text
     */
    setRemoveButtonText(removeButtonText: string): void;
    /**
     * Returns the current modify/edit button text.
     * @returns Current text for the modify button shown when an image exists.
     */
    getModifyButtonText(): string;
    /**
     * Sets the modify/edit button text.
     * @param val - New text for the modify button shown when an image exists.
     */
    setModifyButtonText(val: string): void;
    /**
     * Gets the current placeholder text (empty state message).
     *
     * - Shown when there is no image in the image box.
     * - Corresponds to the `placeholder` prop.
     */
    getPlaceholder(): string;
    /**
     * Sets the placeholder text (empty state message).
     *
     * - Updates UI immediately.
     *
     * @param placeholder - New placeholder text
     */
    setPlaceholder(placeholder: string): void;
    /**
     * Returns whether drag-and-drop uploading is currently enabled.
     *
     * - Controlled by the `enableDrop` prop.
     */
    isEnableDrop(): boolean;
    /**
     * Enables or disables drag-and-drop image file uploading.
     *
     * @param enableDrop - `true` to allow drag-and-drop, `false` to block it.
     */
    setEnableDrop(enableDrop: boolean): void;
    /**
     * Gets the current list of allowed image file types/extensions.
     *
     * - Controlled by the `allowedTypes` prop.
     * - MIME types or extensions (e.g. `.pdf`, `image/png`).
     */
    getAllowedTypes(): string[];
    /**
     * Sets the allowed file types/extensions.
     *
     * - Accepts an array of MIME types or file extensions.
     * - Updates the file input's accept filter and internal validation.
     *
     * @param allowedTypes - Array of allowed types/extensions.
     */
    setAllowedTypes(allowedTypes: string[]): void;
    /**
     * Gets the current list of disallowed file types/extensions.
     *
     * - Controlled by the `disallowedTypes` prop.
     * - MIME types or extensions (e.g. `.exe`, `application/x-msdownload`).
     */
    getDisallowedTypes(): string[];
    /**
     * Sets the disallowed file types/extensions.
     *
     * - Accepts an array of MIME types or file extensions.
     * - Any file matching these types/extensions will be rejected.
     *
     * @param disallowedTypes - Array of disallowed types/extensions.
     */
    setDisallowedTypes(disallowedTypes: string[]): void;
    /**
     * Gets the current maximum allowed file size (per file, bytes).
     *
     * - Controlled by the `maxFileSize` prop.
     */
    getMaxFileSize(): number;
    /**
     * Sets the maximum allowed file size (per file, bytes).
     *
     * - Files exceeding this size are rejected on upload.
     *
     * @param maxFileSize - Maximum size in bytes
     */
    setMaxFileSize(maxFileSize: number): void;
    /**
     * Returns whether the current element displays a border.
     */
    isBorder(): boolean;
    /**
     * ESets whether the current element displays a border.
     *
     * @param border - `true` to display border, `false` to none display border
     */
    setBorder(border: boolean): void;
    /**
     * Sets a custom callback when a file has a disallowed type/extension.
     *
     * - Called during file selection/drag if a file fails allowed/disallowed check.
     * - Use for custom alerts, validation UI, logging, etc.
     *
     * @param onDisallowedType - Callback with the file, allowedTypes, disallowedTypes.
     */
    setOnDisallowedType(onDisallowedType: (currentCheckFile: File, allowedTypes: string[] | null, disallowedTypes: string[] | null) => void): void;
    /**
     * Sets a custom callback when a file exceeds the maximum file size.
     *
     * - Use to alert the user or log the event.
     *
     * @param onMaxFileSizeExceeded - Callback with file, file size, and limit.
     */
    setOnMaxFileSizeExceeded(onMaxFileSizeExceeded: (currentCheckFile: File, currentFileSize: number, maxFileSizeAllowed: number) => void): void;
    /**
     * Returns whether the file list has been modified since the last set/reset.
     *
     * - Adding or removing files, or changing file info, sets this to true.
     */
    isModified(): boolean;
    /**
     * Sets the "modified" state of the image box.
     *
     * - Use to manually reset the modified flag (e.g., after save).
     *
     * @param modified - `true` to mark as modified, `false` to reset.
     */
    setModified(modified: boolean): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Focuses the add image file button.
     *
     * - Useful for accessibility or guiding user attention programmatically.
     */
    focus(): void;
}

export declare const HInput: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
dataKey: {
type: StringConstructor;
required: boolean;
};
name: {
type: StringConstructor;
required: boolean;
};
modelValue: {
type: PropType<any>;
default: null;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
inputType: {
type: PropType<InputType | InputTypeValue>;
required: boolean;
validator: (v: any) => boolean;
};
format: {
type: StringConstructor;
required: boolean;
};
nullText: {
type: StringConstructor;
default: string;
};
maxNumber: {
type: PropType<string | number>;
required: boolean;
};
minNumber: {
type: PropType<string | number>;
required: boolean;
};
roundNumber: {
type: PropType<string | number>;
required: boolean;
};
maxLength: {
type: PropType<string | number>;
required: boolean;
};
maxByte: {
type: PropType<string | number>;
required: boolean;
};
placeholder: {
type: StringConstructor;
required: boolean;
};
placeholderColor: {
type: PropType<string>;
default: string;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
required: {
type: BooleanConstructor;
default: boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
options: {
type: PropType<    {
text: string;
value: any;
}[]>;
required: boolean;
default: () => never[];
};
checkedText: {
type: StringConstructor;
default: string;
};
uncheckedText: {
type: StringConstructor;
default: string;
};
inputTextdHandler: {
type: PropType<(value: any) => string>;
default: undefined;
};
toggleStyle: {
type: PropType<"default" | "switch">;
default: string;
validator: (v: any) => boolean;
};
disableAutoCapitalize: {
type: BooleanConstructor;
default: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
inputRef: Ref<HTMLTextAreaElement | HTMLSelectElement | HTMLInputElement | null, HTMLTextAreaElement | HTMLSelectElement | HTMLInputElement | null>;
inputTextRef: Ref<HTMLInputElement | null, HTMLInputElement | null>;
inputMethods: ComputedRef<HInputMethods | {
getType: () => "input";
getName: () => string;
setName: (name: string) => void;
getDataKey: () => string;
setDataKey: (dataKey: string) => void;
getText: () => string;
getValue: () => any;
setValue: (val: any, opt?: {
emitModelValue?: boolean;
emitChange?: boolean;
notifyGroup?: boolean;
markModified?: boolean;
}) => void;
getInputType: () => InputTypeValue;
setInputType: (type: InputType | InputTypeValue) => void;
getFormat: () => string;
setFormat: (format: string) => void;
getTitle: () => string;
setTitle: (title: string) => void;
getNullText: () => string;
setNullText: (nullText: string) => void;
getEditMode: () => EditModeValue;
setEditMode: (mode: EditMode | EditModeValue) => void;
getMaxNumber: () => number | null;
setMaxNumber: (maxNumber: number) => void;
getMinNumber: () => number | null;
setMinNumber: (minNumber: number) => void;
getRoundNumber: () => number | null;
setRoundNumber: (roundNumber: number) => void;
getMaxLength: () => number | null;
setMaxLength: (maxLength: number) => void;
getMaxByte: () => number | null;
setMaxByte: (maxByte: number) => void;
getRequired: () => boolean;
setRequired: (required: boolean) => void;
getPlaceholder: () => string;
setPlaceholder: (placeholder: string) => void;
getPlaceholderColor: () => string;
setPlaceholderColor: (color: string) => void;
isFontBold: () => boolean;
setFontBold: (bold: boolean) => void;
isFontItalic: () => boolean;
setFontItalic: (italic: boolean) => void;
isFontThruline: () => boolean;
setFontThruline: (thruline: boolean) => void;
isFontUnderline: () => boolean;
setFontUnderline: (underline: boolean) => void;
getTextAlign: () => TextAlignValue;
setTextAlign: (textAlign: TextAlign | TextAlignValue) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
isModified: () => boolean;
setModified: (modified: boolean) => void;
getToggleStyle: () => "default" | "switch";
setToggleStyle: (style: "default" | "switch") => void;
getDisableAutoCapitalize: () => boolean;
setDisableAutoCapitalize: (v: boolean) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
inputValue: ComputedRef<any>;
editing: Ref<boolean, boolean>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
dataKey: {
type: StringConstructor;
required: boolean;
};
name: {
type: StringConstructor;
required: boolean;
};
modelValue: {
type: PropType<any>;
default: null;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
inputType: {
type: PropType<InputType | InputTypeValue>;
required: boolean;
validator: (v: any) => boolean;
};
format: {
type: StringConstructor;
required: boolean;
};
nullText: {
type: StringConstructor;
default: string;
};
maxNumber: {
type: PropType<string | number>;
required: boolean;
};
minNumber: {
type: PropType<string | number>;
required: boolean;
};
roundNumber: {
type: PropType<string | number>;
required: boolean;
};
maxLength: {
type: PropType<string | number>;
required: boolean;
};
maxByte: {
type: PropType<string | number>;
required: boolean;
};
placeholder: {
type: StringConstructor;
required: boolean;
};
placeholderColor: {
type: PropType<string>;
default: string;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
required: {
type: BooleanConstructor;
default: boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
options: {
type: PropType<    {
text: string;
value: any;
}[]>;
required: boolean;
default: () => never[];
};
checkedText: {
type: StringConstructor;
default: string;
};
uncheckedText: {
type: StringConstructor;
default: string;
};
inputTextdHandler: {
type: PropType<(value: any) => string>;
default: undefined;
};
toggleStyle: {
type: PropType<"default" | "switch">;
default: string;
validator: (v: any) => boolean;
};
disableAutoCapitalize: {
type: BooleanConstructor;
default: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onInput?: ((...args: any[]) => any) | undefined;
onBlur?: ((...args: any[]) => any) | undefined;
onChange?: ((...args: any[]) => any) | undefined;
onCompositionend?: ((...args: any[]) => any) | undefined;
onCompositionstart?: ((...args: any[]) => any) | undefined;
onCompositionupdate?: ((...args: any[]) => any) | undefined;
onContextmenu?: ((...args: any[]) => any) | undefined;
onCopy?: ((...args: any[]) => any) | undefined;
onCut?: ((...args: any[]) => any) | undefined;
onDblclick?: ((...args: any[]) => any) | undefined;
onDrag?: ((...args: any[]) => any) | undefined;
onDragend?: ((...args: any[]) => any) | undefined;
onDragstart?: ((...args: any[]) => any) | undefined;
onDrop?: ((...args: any[]) => any) | undefined;
onFocus?: ((...args: any[]) => any) | undefined;
onKeydown?: ((...args: any[]) => any) | undefined;
onKeyup?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseenter?: ((...args: any[]) => any) | undefined;
onMouseleave?: ((...args: any[]) => any) | undefined;
onMousemove?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onPaste?: ((...args: any[]) => any) | undefined;
onPointerdown?: ((...args: any[]) => any) | undefined;
onPointerenter?: ((...args: any[]) => any) | undefined;
onPointerleave?: ((...args: any[]) => any) | undefined;
onPointermove?: ((...args: any[]) => any) | undefined;
onPointerup?: ((...args: any[]) => any) | undefined;
onTouchcancel?: ((...args: any[]) => any) | undefined;
onTouchend?: ((...args: any[]) => any) | undefined;
onTouchmove?: ((...args: any[]) => any) | undefined;
onTouchstart?: ((...args: any[]) => any) | undefined;
onWheel?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}> & {}>;
id: string;
nameAttr: ComputedRef<string>;
responsiveClassList: Ref<string[], string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
editModeClassList: ComputedRef<string[]>;
requiredClassList: ComputedRef<string[]>;
fontBoldClass: ComputedRef<"hison-font-bold" | undefined>;
fontItalicClass: ComputedRef<"hison-font-italic" | undefined>;
fontThrulineClass: ComputedRef<"hison-font-thruline" | undefined>;
fontUnderlineClass: ComputedRef<"hison-font-underline" | undefined>;
textAlignStyle: ComputedRef<    {
textAlign: "left" | "center" | "right";
}>;
placeholderColorStyle: ComputedRef<CSSProperties>;
borderClass: ComputedRef<"" | "hison-border">;
disable: ComputedRef<boolean>;
readonly: ComputedRef<boolean>;
inputType: Ref<"number" | "text" | "mask" | "digit" | "date" | "month" | "time" | "email" | "password" | "checkbox" | "range" | "color" | "textarea" | "select" | "radio" | InputType, "number" | "text" | "mask" | "digit" | "date" | "month" | "time" | "email" | "password" | "checkbox" | "range" | "color" | "textarea" | "select" | "radio" | InputType>;
inputExpressionType: ComputedRef<"text" | "checkbox" | "range" | "color" | "select" | "radio">;
inputAttrType: ComputedRef<"number" | "text" | "mask" | "digit" | "date" | "month" | "time" | "email" | "password" | "checkbox" | "range" | "color" | "textarea" | "select" | "radio" | InputType.text | InputType.number | InputType.date | InputType.month | InputType.time | InputType.email | InputType.password | InputType.checkbox | InputType.range | InputType.color | InputType.textarea | InputType.select | InputType.radio>;
title: Ref<string, string>;
placeholder: Ref<string, string>;
maxNumber: Ref<number | null, number | null>;
minNumber: Ref<number | null, number | null>;
spanText: Ref<string, string>;
toggleStyle: Ref<"default" | "switch", "default" | "switch">;
tabIndex: Ref<number | null, number | null>;
disableAutoCapitalize: Ref<boolean, boolean>;
onInput: (e: Event) => void;
onTextInputFocus: (e: Event) => void;
onFocus: (e: FocusEvent) => void;
onBlur: (e: Event) => void;
onRangeChange: (e: Event) => void;
onColorChange: (e: Event) => void;
onCheckboxChange: (e: Event) => void;
onRadioChange: (e: Event) => void;
onSelectChange: (e: Event) => void;
onKeydown: (e: KeyboardEvent) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "input" | "mounted" | "blur" | "change" | "compositionend" | "compositionstart" | "compositionupdate" | "contextmenu" | "copy" | "cut" | "dblclick" | "drag" | "dragend" | "dragstart" | "drop" | "focus" | "keydown" | "keyup" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" | "paste" | "pointerdown" | "pointerenter" | "pointerleave" | "pointermove" | "pointerup" | "touchcancel" | "touchend" | "touchmove" | "touchstart" | "wheel" | "responsive-change" | "update:modelValue")[], "click" | "input" | "mounted" | "blur" | "change" | "compositionend" | "compositionstart" | "compositionupdate" | "contextmenu" | "copy" | "cut" | "dblclick" | "drag" | "dragend" | "dragstart" | "drop" | "focus" | "keydown" | "keyup" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" | "paste" | "pointerdown" | "pointerenter" | "pointerleave" | "pointermove" | "pointerup" | "touchcancel" | "touchend" | "touchmove" | "touchstart" | "wheel" | "responsive-change" | "update:modelValue", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
dataKey: {
type: StringConstructor;
required: boolean;
};
name: {
type: StringConstructor;
required: boolean;
};
modelValue: {
type: PropType<any>;
default: null;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
inputType: {
type: PropType<InputType | InputTypeValue>;
required: boolean;
validator: (v: any) => boolean;
};
format: {
type: StringConstructor;
required: boolean;
};
nullText: {
type: StringConstructor;
default: string;
};
maxNumber: {
type: PropType<string | number>;
required: boolean;
};
minNumber: {
type: PropType<string | number>;
required: boolean;
};
roundNumber: {
type: PropType<string | number>;
required: boolean;
};
maxLength: {
type: PropType<string | number>;
required: boolean;
};
maxByte: {
type: PropType<string | number>;
required: boolean;
};
placeholder: {
type: StringConstructor;
required: boolean;
};
placeholderColor: {
type: PropType<string>;
default: string;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
required: {
type: BooleanConstructor;
default: boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
options: {
type: PropType<    {
text: string;
value: any;
}[]>;
required: boolean;
default: () => never[];
};
checkedText: {
type: StringConstructor;
default: string;
};
uncheckedText: {
type: StringConstructor;
default: string;
};
inputTextdHandler: {
type: PropType<(value: any) => string>;
default: undefined;
};
toggleStyle: {
type: PropType<"default" | "switch">;
default: string;
validator: (v: any) => boolean;
};
disableAutoCapitalize: {
type: BooleanConstructor;
default: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onInput?: ((...args: any[]) => any) | undefined;
onBlur?: ((...args: any[]) => any) | undefined;
onChange?: ((...args: any[]) => any) | undefined;
onCompositionend?: ((...args: any[]) => any) | undefined;
onCompositionstart?: ((...args: any[]) => any) | undefined;
onCompositionupdate?: ((...args: any[]) => any) | undefined;
onContextmenu?: ((...args: any[]) => any) | undefined;
onCopy?: ((...args: any[]) => any) | undefined;
onCut?: ((...args: any[]) => any) | undefined;
onDblclick?: ((...args: any[]) => any) | undefined;
onDrag?: ((...args: any[]) => any) | undefined;
onDragend?: ((...args: any[]) => any) | undefined;
onDragstart?: ((...args: any[]) => any) | undefined;
onDrop?: ((...args: any[]) => any) | undefined;
onFocus?: ((...args: any[]) => any) | undefined;
onKeydown?: ((...args: any[]) => any) | undefined;
onKeyup?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseenter?: ((...args: any[]) => any) | undefined;
onMouseleave?: ((...args: any[]) => any) | undefined;
onMousemove?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onPaste?: ((...args: any[]) => any) | undefined;
onPointerdown?: ((...args: any[]) => any) | undefined;
onPointerenter?: ((...args: any[]) => any) | undefined;
onPointerleave?: ((...args: any[]) => any) | undefined;
onPointermove?: ((...args: any[]) => any) | undefined;
onPointerup?: ((...args: any[]) => any) | undefined;
onTouchcancel?: ((...args: any[]) => any) | undefined;
onTouchend?: ((...args: any[]) => any) | undefined;
onTouchmove?: ((...args: any[]) => any) | undefined;
onTouchstart?: ((...args: any[]) => any) | undefined;
onWheel?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
textAlign: "left" | "center" | "right" | TextAlign;
required: boolean;
fontBold: boolean;
fontItalic: boolean;
fontThruline: boolean;
fontUnderline: boolean;
visible: boolean;
tabIndex: string | number | null;
modelValue: any;
options: {
text: string;
value: any;
}[];
toggleStyle: "default" | "switch";
editMode: "editable" | "disable" | "readonly" | EditMode;
nullText: string;
placeholderColor: string;
checkedText: string;
uncheckedText: string;
inputTextdHandler: (value: any) => string;
disableAutoCapitalize: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HInputClientOnly: Component;

export declare const HInputGroup: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
editMode: {
type: PropType<EditMode | EDIT_MODE_VALUES[number]>;
required: boolean;
validator: (v: any) => boolean;
};
status: {
type: PropType<DataStatus | DataStatusValue>;
required: boolean;
default: DataStatus;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<Record<string, any>>;
default: () => {};
};
}>, {
inputGroupRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
editMode: {
type: PropType<EditMode | EDIT_MODE_VALUES[number]>;
required: boolean;
validator: (v: any) => boolean;
};
status: {
type: PropType<DataStatus | DataStatusValue>;
required: boolean;
default: DataStatus;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<Record<string, any>>;
default: () => {};
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}> & {}>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "update:modelValue")[], "mounted" | "update:modelValue", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
editMode: {
type: PropType<EditMode | EDIT_MODE_VALUES[number]>;
required: boolean;
validator: (v: any) => boolean;
};
status: {
type: PropType<DataStatus | DataStatusValue>;
required: boolean;
default: DataStatus;
validator: (v: any) => boolean;
};
modelValue: {
type: PropType<Record<string, any>>;
default: () => {};
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
status: "C" | "R" | "U" | "D" | DataStatus;
modelValue: Record<string, any>;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HInputGroupClientOnly: Component;

/**
 * Runtime control methods for `HInputGroup` component.
 *
 * This interface defines the available methods on `HInputGroup`,
 * accessible via `hison.component.getInputGroup(id)`, to programmatically control
 * input group behaviors, state tracking, and data retrieval.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const group = hison.component.getInputGroup('inputGroup1');
 * group.load({ userid: 'hison', email: 'a@b.com' });
 * group.setStatus('U');
 * if (group.isModified()) {
 *   const updated = group.getDataWrapper();
 *   saveToServer(updated);
 * }
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `HInputGroup` tracks internal status (`R`, `C`, `U`, `D`) to reflect data lifecycle.
 * - Modification is automatically tracked when any child input emits a user-driven change.
 * - Supports runtime edit mode toggle and required-field validation.
 */
export declare interface HInputGroupMethods extends Omit<ComponentMethods, 'isVisible' | 'setVisible'> {
    /**
     * Returns the type identifier for the component.
     * Always returns `'inputGroup'`.
     */
    getType(): 'inputGroup';
    /**
     * Clears all values inside the group’s child inputs.
     *
     * @param autoSetStatus If `true`, resets status to `'C'` (created) and clears modification state.
     */
    clear(autoSetStatus?: boolean): void;
    /**
     * Retrieves the current input values as a `DataModel` instance.
     *
     * @returns A `DataModel` object representing the group data as a table (1 row).
     */
    getDataModel<T extends Record<string, any>>(): InterfaceDataModel<T>;
    /**
     * Applies a `DataModel` instance to the input group.
     *
     * This will populate each child input using the first row of the provided `DataModel`.
     * Keys in the row must match input `id`s within the group.
     *
     * ---
     *
     * ### ⚠️ Notes
     * - Only the **first row** of the `DataModel` is used.
     * - If a key is not registered as an input `id`, its value is ignored.
     * - Automatically sets `status` to `'R'` unless suppressed using `load(..., false)`
     *
     * @template T - The shape of the row object in the `DataModel`.
     * @param dataModel A `DataModel` instance containing one or more rows.
     */
    setDataModel<T extends Record<string, any>>(dataModel: InterfaceDataModel<T>): void;
    /**
     * Retrieves the current input values as a plain JavaScript object.
     *
     * @returns An object with keys matching input IDs and values as their current values.
     */
    getDataObject(): Record<string, any>;
    /**
     * Populates the input group with values from a plain JavaScript object.
     *
     * This is equivalent to assigning values directly to each input.
     * Keys in the object must match input `id`s in the group.
     *
     * ---
     *
     * ### ✅ Example
     * ```ts
     * inputGroup.setDataObject({
     *   userId: 'hison',
     *   email: 'a@b.com',
     *   age: 30,
     * });
     * ```
     *
     * @param dataObject An object with keys matching input IDs and values to apply.
     */
    setDataObject(dataObject: Record<string, any>): void;
    /**
     * Loads data into the group’s inputs.
     *
     * Supports `Record<string, any>`, `DataModel`, or `DataWrapper` as source.
     *
     * @param data The data source to apply to the group inputs.
     */
    load<T extends Record<string, any>>(data: Record<string, any> | InterfaceDataModel<T>): void;
    /**
     * Returns the current status of the input group.
     *
     * - `R`: Read
     * - `C`: Created
     * - `U`: Updated
     * - `D`: Deleted
     */
    getStatus(): DataStatusValue;
    /**
     * Sets the status of the input group.
     *
     * Used to manually change the internal data lifecycle state.
     *
     * @param status A valid `DataStatus` value (`R`, `C`, `U`, `D`).
     */
    setStatus(status: DataStatus | DataStatusValue): void;
    /**
     * Returns whether any input inside the group has been modified by user interaction.
     *
     * @returns `true` if at least one input is marked as modified.
     */
    isModified(): boolean;
    /**
     * Resets the modification status of all inputs in the group.
     *
     * Typically called after saving or loading new data.
     */
    initModified(): void;
    /**
     * Validates required fields in the group.
     *
     * Checks all child `HInput` and `HNote` components with `required=true`.
     *
     * @returns The first invalid component’s method instance, or `null` if all pass.
     */
    checkRequired(): HInputMethods | null;
    /**
     * Gets the current edit mode of the group.
     *
     * Possible values:
     * - `'editable'`: Inputs are editable
     * - `'readonly'`: Inputs are readonly (visually different)
     * - `'disable'`: Inputs are disabled (fully blocked)
     */
    getEditMode(): EditModeValue;
    /**
     * Sets the edit mode for all inputs in the group.
     *
     * @param mode One of: `'editable'`, `'readonly'`, `'disable'`
     */
    setEditMode(mode: EditMode | EditModeValue): void;
    /**
     * Focus on the first input that is editable, or a specific input if `inputId` is provided.
     *
     * - If `inputId` is specified, it directly focuses on the corresponding input component within the group (if found).
     * - If `inputId` is omitted, the method will iterate over all registered input IDs in alphabetical order
     *   and focus on the first one whose edit mode is `'editable'`.
     * - The sorting ensures consistent focus behavior regardless of DOM render timing or Vue's mount order.
     *
     * @param inputId - Optional ID of the specific input to focus. If omitted, the first editable input is focused.
     */
    focus(inputId?: string): void;
}

/**
 * Runtime control methods for `HInput` component.
 *
 * This interface defines methods accessible via `hison.component.getInput(id)`.
 * It enables full runtime control over the input’s value, style, state, and formatting.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const input = hison.component.getInput('input01');
 * input.setValue('123456');
 * input.setVisible(true);
 * input.setFormat('###-###');
 * input.setEditMode('readonly');
 * input.setFontUnderline(true);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - All changes are reactive and immediately reflected in the DOM.
 * - Formatting is internally handled via `hison.utils` functions.
 * - Input can operate in `editable`, `readonly`, or `disable` mode.
 */
export declare interface HInputMethods extends ComponentMethods {
    /**
     * Returns the type of the input.
     */
    getType(): 'input';
    /**
     * Gets the current HTML `name` of this input.
     * - For radio inputs, this is the **group key** used by `HInputGroup` to aggregate
     *   selection as `{ [name]: selectedRadioId | null }`.
     * - For non-radio inputs, it’s just the underlying HTML attribute.
     */
    getName(): string;
    /**
     * Sets the HTML `name` of this input.
     * - Safe to call at runtime.
     * - **Radio inputs:** re-registers group membership with `HInputGroup`
     *   (moves this radio from the old group to the new one). The current `checked`
     *   state is preserved and the group’s `{ [name]: id | null }` mapping updates.
     * - **Non-radio inputs:** only updates the HTML attribute; no grouping behavior.
     * - Does **not** toggle the radio’s checked state by itself.
     */
    setName(name: string): void;
    /**
     * Gets the data extraction key for `HInputGroup`.
     * - Used as the key when `HInputGroup` extracts data.
     * - If empty, `HInput` falls back to `id`.
     */
    getDataKey(): string;
    /**
     * Sets the data extraction key for `HInputGroup`.
     * - If empty, it falls back to `id`.
     * - This does not change the runtime identifier (`id`).
     */
    setDataKey(dataKey: string): void;
    /**
     * Returns the formatted display text shown in the span layer.
     * - Applies `format`, `nullText`, and masking logic based on `type`.
     */
    getText(): string;
    /**
     * Gets the current raw input value (after internal processing).
     * - For example, digit-only inputs are stripped via `getDigitsOnly`.
     */
    getValue(): any;
    /**
     * Sets the current input value.
     * - Automatically re-applies formatting and validation.
     *
     * @param opt - Optional flags (default: all `true`)
     *   - `emitModelValue`: emit `update:modelValue`
     *   - `emitChange`: emit `change(oldValue, newValue, methods)`
     *   - `notifyGroup`: sync with `HInputGroup` (radio: `{ [name]: selectedKey | null }`)
     *   - `markModified`: set `isModified = true`
     */
    setValue: (val: any, opt?: {
        emitModelValue?: boolean;
        emitChange?: boolean;
        notifyGroup?: boolean;
        markModified?: boolean;
    }) => void;
    /**
     * Gets the current input type.
     * - Matches the `InputType` enum (e.g., `'text'`, `'date'`, `'number'`, etc.)
     */
    getInputType(): InputTypeValue;
    /**
     * Sets the input type.
     * - Automatically adjusts formatting/rendering logic.
     */
    setInputType(type: InputType | InputTypeValue): void;
    /**
     * Gets the format string used to format the value.
     * - Affects `'number'`, `'mask'`, `'date'`, `'month'` types.
     */
    getFormat(): string;
    /**
     * Sets the input format.
     * - Uses `hison.utils.getDateWithFormat`, `getNumberFormat`, etc.
     */
    setFormat(format: string): void;
    /**
     * Gets the tooltip (title attribute) of the input.
     */
    getTitle(): string;
    /**
     * Sets the tooltip (title attribute) of the input.
     * - Appears on hover.
     */
    setTitle(title: string): void;
    /**
     * Gets the current `nullText` string used when value is empty.
     */
    getNullText(): string;
    /**
     * Sets the `nullText` to display when the value is empty or null.
     */
    setNullText(nullText: string): void;
    /**
     * Gets the current edit mode.
     * - Possible values: `'editable'`, `'readonly'`, `'disable'`
     */
    getEditMode(): EditModeValue;
    /**
     * Sets the edit mode of the input.
     * - `'readonly'` and `'disable'` both prevent editing but differ in style.
     */
    setEditMode(mode: EditMode | EditModeValue): void;
    /**
     * Gets the maximum allowed numeric value (if applicable).
     * - Only applies when `type === 'number'`
     */
    getMaxNumber(): number | null;
    /**
     * Sets the maximum numeric value.
     * - Enforced on input and formatting.
     */
    setMaxNumber(maxNumber: number): void;
    /**
     * Gets the minimum allowed numeric value.
     */
    getMinNumber(): number | null;
    /**
     * Sets the minimum numeric value.
     * - Enforced during input.
     */
    setMinNumber(minNumber: number): void;
    /**
     * Gets the rounding precision for numeric values.
     * - Applies only to `type === 'number'`
     */
    getRoundNumber(): number | null;
    /**
     * Sets the rounding precision.
     * - Accepts positive/negative integers or `0`.
     */
    setRoundNumber(roundNumber: number): void;
    /**
     * Gets the current maximum character length allowed.
     * - Input is truncated if exceeded.
     */
    getMaxLength(): number | null;
    /**
     * Sets the maximum allowed character length.
     */
    setMaxLength(maxLength: number): void;
    /**
     * Gets the maximum allowed byte size.
     * - Uses UTF-8 encoding logic via `hison.utils.getCutByteLength()`.
     */
    getMaxByte(): number | null;
    /**
     * Sets the maximum allowed byte size.
     * - Truncates input based on encoded byte length.
     */
    setMaxByte(maxByte: number): void;
    /**
     * Gets whether the input is currently required.
     * - If `true`, the input will show a visual required style.
     */
    getRequired(): boolean;
    /**
     * Sets the required state of the input.
     */
    setRequired(required: boolean): void;
    /**
     * Gets the current placeholder text.
     */
    getPlaceholder(): string;
    /**
     * Sets the placeholder text.
     * - Maps to the native `placeholder` attribute.
     */
    setPlaceholder(placeholder: string): void;
    /**
     * Gets the current placeholder text color.
     * - Returns semantic token (e.g. 'primary') or raw CSS color string.
     */
    getPlaceholderColor(): string;
    /**
     * Sets the placeholder text color.
     * - Accepts semantic tokens: 'primary' | 'muted' | 'info' | 'success' | 'danger' | 'warning'
     *   or any valid CSS color string (e.g. '#fff', '#ffffff', 'rgb(...)', 'rgba(...)').
     */
    setPlaceholderColor(color: string): void;
    /**
     * Returns whether bold font is applied to the span text.
     */
    isFontBold(): boolean;
    /**
     * Applies or removes bold style from the span text.
     */
    setFontBold(bold: boolean): void;
    /**
     * Returns whether italic font is applied to the span text.
     */
    isFontItalic(): boolean;
    /**
     * Applies or removes italic style from the span text.
     */
    setFontItalic(italic: boolean): void;
    /**
     * Returns whether strikethrough is applied to the span text.
     */
    isFontThruline(): boolean;
    /**
     * Applies or removes strikethrough style from the span text.
     */
    setFontThruline(thruline: boolean): void;
    /**
     * Returns whether underline is applied to the span text.
     */
    isFontUnderline(): boolean;
    /**
     * Applies or removes underline style from the span text.
     */
    setFontUnderline(underline: boolean): void;
    /**
     * Returns current text alignment ('left' | 'center' | 'right').
     */
    getTextAlign(): TextAlignValue;
    /**
     * Sets text alignment for the input.
     */
    setTextAlign(textAlign: TextAlign | TextAlignValue): void;
    /**
     * Returns whether the label shows border (box-shadow).
     */
    isBorder(): boolean;
    /**
     * Sets whether border (box-shadow) is shown.
     * @param border - `true` to show, `false` to hide.
     */
    setBorder(border: boolean): void;
    /**
     * Returns whether the input value has been modified since initial load or last reset.
     * - Modification is only tracked via user interactions (`onInput`, `onBlur`, `onChange`).
     * - This is used by parent components like `HInputGroup` to determine group-level state.
     */
    isModified(): boolean;
    /**
     * Sets the modified state of the input manually.
     * - Typically used by container components (e.g., `HInputGroup`) to reset modification tracking.
     * @param modified A boolean indicating whether the input should be marked as modified.
     */
    setModified(modified: boolean): void;
    /**
     * Returns the current toggle style of the input (`checkbox` or `radio`).
     * @returns `'default'` for standard style, or `'switch'` for switch-type toggle.
     */
    getToggleStyle(): 'default' | 'switch';
    /**
     * Sets the toggle style for the input (`checkbox` or `radio`).
     * @param style - `'default'` for standard style, or `'switch'` for switch-type toggle.
     */
    setToggleStyle(style: 'default' | 'switch'): void;
    /**
     * Returns whether automatic capitalization is disabled on mobile keyboards.
     * @returns `true` if disabled, otherwise `false`.
     */
    getDisableAutoCapitalize(): boolean;
    /**
     * Enables or disables automatic capitalization on mobile keyboards.
     * @param v - `true` to disable auto capitalization, otherwise `false`.
     */
    setDisableAutoCapitalize(v: boolean): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Focus on the input.
     */
    focus(): void;
}

/**
 * Global runtime facade for the `hisonvue` ecosystem.
 *
 * The `Hison` object in `hisonvue` acts as the **frontend counterpart** to the core `Hison` from `hisonjs`.
 * While `hisonjs` focuses on configuration, data handling, and communication logic,
 * `hisonvue` extends this foundation into the **UI runtime layer**—managing
 * event hooks, component lifecycles, and theme styling in real time.
 *
 * ---
 * ### Relation to `hisonjs`
 * This object extends {@link Hisonjs}, inheriting:
 * - **Configuration and Utility Layers**: Formatting, type conversion, validation, and constants.
 * - **Security Controls (`hison.shield`)**: Access, freezing, and developer tool restrictions.
 * - **Data Models (`hison.data`)**: `DataWrapper`, `DataModel`, and related data transformation tools.
 * - **API Communication (`hison.link`)**: Promise-based REST and WebSocket interfaces.
 *
 * On top of these, `hisonvue` introduces **UI-centric runtime systems**:
 *
 * - **Global Event Hooks (`cssEvent`)**
 *   Intercept and modify component interactions (click, focus, blur, mouse/touch events)
 *   across the entire app, before or after they occur.
 *
 * - **Component Registry (`component`)**
 *   Provides runtime access to all mounted hisonvue components via `id`.
 *   Developers can programmatically control or query components even outside Vue scopes,
 *   enabling reactive orchestration between views and data.
 *
 * - **Dynamic Theming & Size Control (`style`)**
 *   Manages global CSS variable states for colors, text, and layout sizes.
 *   Changing these values automatically updates all mounted components without reloading the page.
 *
 * ---
 * ### Internal Architecture
 * The entire hisonvue runtime is built around a **shared internal state container** known as `hison`.
 * This closure encapsulates mutable runtime data and exposes only safe API methods through this public interface.
 *
 * - **Public Setters/Getters** → update the internal `hison` fields.
 * - **CSS Variable Management** → uses `applyCssVariables()` to re-apply computed styles to the document root.
 * - **Component Reload** → triggers `reloadAllHisonComponents()` to refresh visual themes non-destructively.
 * - **SSR-Safe Operation** → browser-only side effects are guarded by runtime environment checks.
 *
 * This separation ensures:
 * - Consistent theme and event propagation across all components.
 * - Isolation of mutable UI state from the immutable base hisonjs core.
 * - Full TypeScript typing and IntelliSense coverage for both logic and UI.
 *
 * ---
 * ### Runtime Flow Example
 * ```typescript
 * // Customize global button behavior
 * hison.cssEvent.setButtonOnBefoerClick((e) => {
 *   console.log("Before click:", e.target);
 *   return true; // returning false cancels the event
 * });
 *
 * // Dynamically recolor the theme
 * hison.style.setPrimaryColor("#4E79FF");
 * hison.style.setInvertColor(true);
 *
 * // Access and control a mounted component by id
 * const modal = hison.component.getModal("userInfoModal");
 * modal?.open();
 * ```
 *
 * ---
 * ### Design Philosophy
 * - **Unified Runtime Bridge** — Integrates logic (hisonjs) and UI (hisonvue) through a single global object.
 * - **Declarative yet Controllable** — All Vue components are reactive but remain controllable imperatively.
 * - **Theme Reactivity** — Any visual property (color, size, typography) can be updated at runtime.
 * - **Extensible Hooks** — Developers can globally override or extend behavior without touching component internals.
 * - **SSR Compatibility** — Designed to be safe for use with Nuxt 3 or Vue SSR environments.
 *
 * ---
 * ### Usage Scenarios
 * - Injecting custom UX logic globally (e.g., analytics before button clicks).
 * - Building dynamic dashboards that manipulate component layouts in runtime.
 * - Re-theming enterprise applications without recompilation.
 * - Providing consistent interaction feedback across all hisonvue elements.
 *
 * ---
 * ### Notes
 * - **SSR-Safe**: CSS variable application runs only in client environments (`typeof window !== 'undefined'`).
 * - **Component Safety**: Each `getXxx(id)` returns `null` if no component is registered under that id—no runtime throw.
 * - **Naming Consistency**: Certain method names contain legacy typos (e.g., `Befoer` instead of `Before`);
 *   they are preserved for backward compatibility but may be formally deprecated in a future release.
 *
 * ---
 * ### Summary
 * The `Hison` object in `hisonvue` represents the **bridge between data-driven logic and UI runtime control**.
 * It inherits all configuration, data, and communication capabilities from `hisonjs`,
 * while providing unified control over visual, behavioral, and interactive elements in Vue-based applications.
 *
 * By consolidating configuration, runtime state, and UI event orchestration into a single
 * globally accessible object, it ensures both **developer productivity** and **runtime consistency**
 * across large-scale, enterprise-grade applications built with the hisondev ecosystem.
 */
export declare interface Hison extends Hison_2 {
    /**
     * Sets the **maximum total upload size (bytes)** allowed across an entire HFileSet component.
     * This guards the *sum* of all selected files in a single widget.
     *
     * @param fileSize - Maximum total size in bytes. Use `Infinity` for no global limit.
     * @example
     * hison.setMaxFilesetTotalSize(20 * 1024 * 1024) // 20 MB across all files
     */
    setMaxFilesetTotalSize(fileSize: number): void;
    /**
     * Sets the **maximum per-file upload size (bytes)** for HFileSet.
     * This guards the size of **each individual** file that a user selects.
     *
     * @param fileTotalSize - Maximum bytes allowed per file. Use `Infinity` to remove this cap.
     * @example
     * hison.setMaxFilesetSize(5 * 1024 * 1024) // 5 MB per file
     */
    setMaxFilesetSize(fileTotalSize: number): void;
    /**
     * Returns the currently effective **maximum total upload size** (bytes) across the entire HFileSet.
     * @returns The configured limit in bytes (or `Infinity` if unlimited).
     */
    getMaxFilesetTotalSize(): number;
    /**
     * Returns the currently effective **maximum per-file upload size** (bytes) for HFileSet.
     * @returns The configured limit in bytes (or `Infinity` if unlimited).
     */
    getMaxFilesetSize(): number;
    /**
     * Global UI interaction hooks for hisonvue components.
     *
     * Each setter replaces the active handler for the given event “slot”.
     * - **Button** series targets `<HButton>` UI events.
     * - **Input** series targets text-input-like components (e.g., `<HInput>`, `<HInputGroup>`).
     *
     * @remarks
     * - “Before” handlers (`...OnBefore...`) may return `false` to cancel the action.
     * - “After” handlers (`...OnAfter...`) run after the component processes the event.
     * - Handlers are invoked by components that integrate with the hisonvue event system.
     * - Method names include a typo (`Befoer` → *Before*). Kept for compatibility.
     * - If you need **multiple** handlers per event, compose them manually in your setter or
     *   consider introducing an internal add/remove pipeline in a future version.
     *
     * @example
     * // Cancel every HButton click unless a condition passes
     * hison.cssEvent.setButtonOnBefoerClick((e) => {
     *   const allow = someGuard();
     *   if (!allow) e.preventDefault();
     *   return allow;
     * });
     *
     * @example
     * // Add a visual cue after any HInput focus
     * hison.cssEvent.setInputOnAfterFocus(() => highlightInputs());
     */
    cssEvent: {
        /** Registers a global BEFORE-focus handler for HButton (return `false` to cancel). (typo: Befoer) */
        setButtonOnBefoerFocus(func: (e: FocusEvent) => boolean): void;
        /** Registers a global AFTER-focus handler for HButton. */
        setButtonOnAfterFocus(func: (e: FocusEvent) => void): void;
        /** Registers a global BEFORE-blur handler for HButton (return `false` to cancel). (typo: Befoer) */
        setButtonOnBefoerBlur(func: (e: FocusEvent) => boolean): void;
        /** Registers a global AFTER-blur handler for HButton. */
        setButtonOnAfterBlur(func: (e: FocusEvent) => void): void;
        /** Registers a global BEFORE-click handler for HButton (return `false` to cancel). (typo: Befoer) */
        setButtonOnBefoerClick(func: (e: MouseEvent) => boolean): void;
        /** Registers a global AFTER-click handler for HButton. */
        setButtonOnAfterClick(func: (e: MouseEvent) => void): void;
        /** Registers a global BEFORE-mouseover handler for HButton (return `false` to cancel). */
        setButtonOnBeforeMouseover(func: (e: MouseEvent) => boolean): void;
        /** Registers a global AFTER-mouseover handler for HButton. */
        setButtonOnAfterMouseover(func: (e: MouseEvent) => void): void;
        /** Registers a global BEFORE-mouseout handler for HButton (return `false` to cancel). */
        setButtonOnBeforeMouseout(func: (e: MouseEvent) => boolean): void;
        /** Registers a global AFTER-mouseout handler for HButton. */
        setButtonOnAfterMouseout(func: (e: MouseEvent) => void): void;
        /** Registers a global BEFORE-touchstart handler for HButton (return `false` to cancel). */
        setButtonOnBeforeTouchstart(func: (e: TouchEvent) => boolean): void;
        /** Registers a global AFTER-touchstart handler for HButton. */
        setButtonOnAfterTouchstart(func: (e: TouchEvent) => void): void;
        /** Registers a global BEFORE-touchend handler for HButton (return `false` to cancel). */
        setButtonOnBeforeTouchend(func: (e: TouchEvent) => boolean): void;
        /** Registers a global AFTER-touchend handler for HButton. */
        setButtonOnAfterTouchend(func: (e: TouchEvent) => void): void;
        /** Registers a global BEFORE-focus handler for Input-like components (return `false` to cancel). (typo: Befoer) */
        setInputOnBefoerFocus(func: (e: FocusEvent) => boolean): void;
        /** Registers a global AFTER-focus handler for Input-like components. */
        setInputOnAfterFocus(func: (e: FocusEvent) => void): void;
        /** Registers a global BEFORE-blur handler for Input-like components (return `false` to cancel). (typo: Befoer) */
        setInputOnBefoerBlur(func: (e: FocusEvent) => boolean): void;
        /** Registers a global AFTER-blur handler for Input-like components. */
        setInputOnAfterBlur(func: (e: FocusEvent) => void): void;
        /** Registers a global BEFORE-mouseover handler for Input-like components (return `false` to cancel). */
        setInputOnBeforeMouseover(func: (e: MouseEvent) => boolean): void;
        /** Registers a global AFTER-mouseover handler for Input-like components. */
        setInputOnAfterMouseover(func: (e: MouseEvent) => void): void;
        /** Registers a global BEFORE-mouseout handler for Input-like components (return `false` to cancel). */
        setInputOnBeforeMouseout(func: (e: MouseEvent) => boolean): void;
        /** Registers a global AFTER-mouseout handler for Input-like components. */
        setInputOnAfterMouseout(func: (e: MouseEvent) => void): void;
        /** Registers a global BEFORE-touchstart handler for Input-like components (return `false` to cancel). */
        setInputOnBeforeTouchstart(func: (e: TouchEvent) => boolean): void;
        /** Registers a global AFTER-touchstart handler for Input-like components. */
        setInputOnAfterTouchstart(func: (e: TouchEvent) => void): void;
        /** Registers a global BEFORE-touchend handler for Input-like components (return `false` to cancel). */
        setInputOnBeforeTouchend(func: (e: TouchEvent) => boolean): void;
        /** Registers a global AFTER-touchend handler for Input-like components. */
        setInputOnAfterTouchend(func: (e: TouchEvent) => void): void;
    };
    /**
     * Runtime accessors for **mounted component instances** by their `id`.
     *
     * Components register/unregister themselves to an internal registry during mount/unmount.
     * Each getter returns the type-specific method interface for imperative control,
     * or `null` if no component is registered under that id.
     *
     * @remarks
     * - Use these accessors to orchestrate UI from outside component scopes (e.g., from services or stores).
     * - Prefer stable, unique `id` assignments to avoid collisions.
     * - If you need strict behavior, wrap calls with your own `requireXxx(id)` helper that throws on `null`.
     *
     * @example
     * const btn = hison.component.getButton('primarySubmit');
     * btn?.setLoading(true);
     * btn?.setDisabled(true);
     */
    component: {
        /** Returns the runtime methods for an HAccordion, or `null` if not found. */
        getAccordion(accordionId: string): HAccordionMethods | null;
        /** Returns the runtime methods for an HBaggie, or `null` if not found. */
        getBaggie(baggieId: string): HBaggieMethods | null;
        /** Returns the runtime methods for an HBanner, or `null` if not found. */
        getBanner(bannerId: string): HBannerMethods | null;
        /** Returns the runtime methods for an HButton, or `null` if not found. */
        getButton(buttonId: string): HButtonMethods | null;
        /** Returns the runtime methods for an HCalendar, or `null` if not found. */
        getCalendar(calendarId: string): HCalendarMethods | null;
        /** Returns the runtime methods for an HCaption, or `null` if not found. */
        getCaption(calendarId: string): HCaptionMethods | null;
        /** Returns the chart instance handle, or `null` if not found. */
        getChart(chartId: string): HChartInstance | null;
        /** Returns the runtime methods for an HDrawer, or `null` if not found. */
        getDrawer(drawerId: string): HDrawerMethods | null;
        /** Returns the runtime methods for an HDropdown, or `null` if not found. */
        getDropdown(dropdownId: string): HDropdownMethods | null;
        /** Returns the runtime methods for an HFileSet, or `null` if not found. */
        getFileset(filesetId: string): HFilesetMethods | null;
        /** Returns the runtime methods for an HGap, or `null` if not found. */
        getGap(gapId: string): HGapMethods | null;
        /** Returns the runtime methods for an HGrid, or `null` if not found. */
        getGrid(gridId: string): HGridMethods | null;
        /** Returns the runtime methods for an HImageBox, or `null` if not found. */
        getImagebox(imageboxId: string): HImageboxMethods | null;
        /** Returns the runtime methods for an HInput, or `null` if not found. */
        getInput(inputId: string): HInputMethods | null;
        /** Returns the runtime methods for an HInputGroup, or `null` if not found. */
        getInputGroup(inputGroupId: string): HInputGroupMethods | null;
        /** Returns the runtime methods for an HLabel, or `null` if not found. */
        getLabel(labelId: string): HLabelMethods | null;
        /** Returns the runtime methods for an HLayout, or `null` if not found. */
        getLayout(layoutId: string): HLayoutMethods | null;
        /** Returns the runtime methods for an HList, or `null` if not found. (param name has a typo: listtId) */
        getList(listtId: string): HListMethods | null;
        /** Returns the runtime methods for an HModal, or `null` if not found. (param name has a typo: listtId) */
        getModal(listtId: string): HModalMethods | null;
        /** Returns the DOM-like note element handle, or `null` if not found. */
        getNote(noteId: string): HNoteElement | null;
        /** Returns the runtime methods for an HPagination, or `null` if not found. */
        getPagination(paginationId: string): HPaginationMethods | null;
        /** Returns the runtime methods for an HParagraph, or `null` if not found. */
        getParagraph(paragraphId: string): HParagraphMethods | null;
        /** Returns the runtime methods for an HPopup, or `null` if not found. */
        getPopup(popupId: string): HPopupMethods | null;
        /** Returns the runtime methods for an HSpinner, or `null` if not found. */
        getSpinner(spinnerId: string): HSpinnerMethods | null;
        /** Returns the runtime methods for an HTable, or `null` if not found. */
        getTable(tableId: string): HTableMethods | null;
    };
    /**
     * Global theme & sizing controller. Mutators update the runtime theme state and
     * re-apply CSS variables to the document, then softly reload mounted components
     * so visual changes take effect immediately.
     *
     * Colors accept any valid CSS color string (hex, rgb(a), hsl(a), named colors).
     * Size uses the predefined scale from {@link Size}.
     *
     * @remarks
     * - Some “derived” getters (e.g., button/border/hover colors) return computed values
     *   from the base palette; implementations typically cache or derive them from the
     *   current theme and inversion state.
     * - `invertColor` flips foreground/background contrast for dark/light schemes.
     *
     * @example
     * // Switch to a medium size scale and update the primary palette:
     * hison.style.setSize(Size.m);
     * hison.style.setPrimaryColor('#4e79ff');
     * hison.style.setInvertColor(true);
     */
    style: {
        /** Sets the global size scale. Affects paddings, radii, and control heights. */
        setSize(size: Size.xs | Size.s | Size.m | Size.l | Size.xl): void;
        /** Sets the base “filled” surface color used by components. */
        setFilledColor(filledColor: string): void;
        /** Sets the base “empty/outline” surface color used by components. */
        setEmptyColor(emptyColor: string): void;
        /** Sets the default text color on filled surfaces. */
        setFilledTextColor(filledTextColor: string): void;
        /** Sets the default text color on empty/outline surfaces. */
        setEmptyTextColor(emptyTextColor: string): void;
        /** Sets the primary accent color (brand color). */
        setPrimaryColor(primaryColor: string): void;
        /** Sets the muted/neutral color. */
        setMutedColor(mutedColor: string): void;
        /** Sets the informational color (status). */
        setInfoColor(infoColor: string): void;
        /** Sets the success color (status). */
        setSuccessColor(successColor: string): void;
        /** Sets the danger color (status). */
        setDangerColor(dangerColor: string): void;
        /** Sets the warning color (status). */
        setWarningColor(warningColor: string): void;
        /** Sets the custom1 color (status). */
        setCustom1Color(custom1Color: string): void;
        /** Sets the custom2 color (status). */
        setCustom2Color(custom2Color: string): void;
        /** Sets the custom3 color (status). */
        setCustom3Color(custom3Color: string): void;
        /** Sets the custom4 color (status). */
        setCustom4Color(custom4Color: string): void;
        /** Sets the custom5 color (status). */
        setCustom5Color(custom5Color: string): void;
        /**
         * Enables or disables **color inversion** (dark/light intent).
         * When enabled, derived text/background pairs flip to preserve contrast.
         */
        setInvertColor(invert: boolean): void;
        /**
         * Returns the current device type based on the client viewport width.
         * - SSR-safe: returns `'pc'` by default when executed on the server.
         *
         * @returns {'mb' | 'tb' | 'pc' | 'wd'} - Device type:
         *   - 'mb': mobile (<768px)
         *   - 'tb': tablet (<1200px)
         *   - 'pc': desktop (<1980px)
         *   - 'wd': wide (≥1980px)
         */
        getDeviceType(): DeviceType;
        /** Returns the base filled surface color. */
        getFilledColor(): string;
        /** Returns the base empty/outline surface color. */
        getEmptyColor(): string;
        /** Returns the default text color on filled surfaces. */
        getFilledTextColor(): string;
        /** Returns the default text color on empty/outline surfaces. */
        getEmptyTextColor(): string;
        /** Returns the primary base color. */
        getPrimaryColor(): string;
        /** Returns the computed button color for the primary palette. */
        getPrimaryButtonColor(): string;
        /** Returns the computed border color for the primary palette. */
        getPrimaryBorderColor(): string;
        /** Returns the computed shadow color for the primary palette. */
        getPrimaryShadowColor(): string;
        /** Returns the computed hover color for the primary palette. */
        getPrimaryHoverColor(): string;
        /** Returns the computed active color for the primary palette. */
        getPrimaryActiveColor(): string;
        /** Returns the computed row hover color for the primary palette (e.g., tables). */
        getPrimaryRowHoverColor(): string;
        /** Returns the computed stripe color for the primary palette (e.g., zebra rows). */
        getPrimaryStripeColor(): string;
        /** Returns the muted base color. */
        getMutedColor(): string;
        /** Returns the computed button color for the muted palette. */
        getMutedButtonColor(): string;
        /** Returns the computed border color for the muted palette. */
        getMutedBorderColor(): string;
        /** Returns the computed shadow color for the muted palette. */
        getMutedShadowColor(): string;
        /** Returns the computed hover color for the muted palette. */
        getMutedHoverColor(): string;
        /** Returns the computed active color for the muted palette. */
        getMutedActiveColor(): string;
        /** Returns the computed row hover color for the muted palette. */
        getMutedRowHoverColor(): string;
        /** Returns the computed stripe color for the muted palette. */
        getMutedStripeColor(): string;
        /** Returns the info base color. */
        getInfoColor(): string;
        /** Returns the computed button color for the info palette. */
        getInfoButtonColor(): string;
        /** Returns the computed border color for the info palette. */
        getInfoBorderColor(): string;
        /** Returns the computed shadow color for the info palette. */
        getInfoShadowColor(): string;
        /** Returns the computed hover color for the info palette. */
        getInfoHoverColor(): string;
        /** Returns the computed active color for the info palette. */
        getInfoActiveColor(): string;
        /** Returns the computed row hover color for the info palette. */
        getInfoRowHoverColor(): string;
        /** Returns the computed stripe color for the info palette. */
        getInfoStripeColor(): string;
        /** Returns the success base color. */
        getSuccessColor(): string;
        /** Returns the computed button color for the success palette. */
        getSuccessButtonColor(): string;
        /** Returns the computed border color for the success palette. */
        getSuccessBorderColor(): string;
        /** Returns the computed shadow color for the success palette. */
        getSuccessShadowColor(): string;
        /** Returns the computed hover color for the success palette. */
        getSuccessHoverColor(): string;
        /** Returns the computed active color for the success palette. */
        getSuccessActiveColor(): string;
        /** Returns the computed row hover color for the success palette. */
        getSuccessRowHoverColor(): string;
        /** Returns the computed stripe color for the success palette. */
        getSuccessStripeColor(): string;
        /** Returns the danger base color. */
        getDangerColor(): string;
        /** Returns the computed button color for the danger palette. */
        getDangerButtonColor(): string;
        /** Returns the computed border color for the danger palette. */
        getDangerBorderColor(): string;
        /** Returns the computed shadow color for the danger palette. */
        getDangerShadowColor(): string;
        /** Returns the computed hover color for the danger palette. */
        getDangerHoverColor(): string;
        /** Returns the computed active color for the danger palette. */
        getDangerActiveColor(): string;
        /** Returns the computed row hover color for the danger palette. */
        getDangerRowHoverColor(): string;
        /** Returns the computed stripe color for the danger palette. */
        getDangerStripeColor(): string;
        /** Returns the warning base color. */
        getWarningColor(): string;
        /** Returns the computed button color for the warning palette. */
        getWarningButtonColor(): string;
        /** Returns the computed border color for the warning palette. */
        getWarningBorderColor(): string;
        /** Returns the computed shadow color for the warning palette. */
        getWarningShadowColor(): string;
        /** Returns the computed hover color for the warning palette. */
        getWarningHoverColor(): string;
        /** Returns the computed active color for the warning palette. */
        getWarningActiveColor(): string;
        /** Returns the computed row hover color for the warning palette. */
        getWarningRowHoverColor(): string;
        /** Returns the computed stripe color for the warning palette. */
        getWarningStripeColor(): string;
        /** Returns the custom1 base color. */
        getCustom1Color(): string;
        /** Returns the computed button color for the custom1 palette. */
        getCustom1ButtonColor(): string;
        /** Returns the computed border color for the custom1 palette. */
        getCustom1BorderColor(): string;
        /** Returns the computed shadow color for the custom1 palette. */
        getCustom1ShadowColor(): string;
        /** Returns the computed hover color for the custom1 palette. */
        getCustom1HoverColor(): string;
        /** Returns the computed active color for the custom1 palette. */
        getCustom1ActiveColor(): string;
        /** Returns the computed row hover color for the custom1 palette. */
        getCustom1RowHoverColor(): string;
        /** Returns the computed stripe color for the custom1 palette. */
        getCustom1StripeColor(): string;
        /** Returns the custom2 base color. */
        getCustom2Color(): string;
        /** Returns the computed button color for the custom2 palette. */
        getCustom2ButtonColor(): string;
        /** Returns the computed border color for the custom2 palette. */
        getCustom2BorderColor(): string;
        /** Returns the computed shadow color for the custom2 palette. */
        getCustom2ShadowColor(): string;
        /** Returns the computed hover color for the custom2 palette. */
        getCustom2HoverColor(): string;
        /** Returns the computed active color for the custom2 palette. */
        getCustom2ActiveColor(): string;
        /** Returns the computed row hover color for the custom2 palette. */
        getCustom2RowHoverColor(): string;
        /** Returns the computed stripe color for the custom2 palette. */
        getCustom2StripeColor(): string;
        /** Returns the custom3 base color. */
        getCustom3Color(): string;
        /** Returns the computed button color for the custom3 palette. */
        getCustom3ButtonColor(): string;
        /** Returns the computed border color for the custom3 palette. */
        getCustom3BorderColor(): string;
        /** Returns the computed shadow color for the custom3 palette. */
        getCustom3ShadowColor(): string;
        /** Returns the computed hover color for the custom3 palette. */
        getCustom3HoverColor(): string;
        /** Returns the computed active color for the custom3 palette. */
        getCustom3ActiveColor(): string;
        /** Returns the computed row hover color for the custom3 palette. */
        getCustom3RowHoverColor(): string;
        /** Returns the computed stripe color for the custom3 palette. */
        getCustom3StripeColor(): string;
        /** Returns the custom4 base color. */
        getCustom4Color(): string;
        /** Returns the computed button color for the custom4 palette. */
        getCustom4ButtonColor(): string;
        /** Returns the computed border color for the custom4 palette. */
        getCustom4BorderColor(): string;
        /** Returns the computed shadow color for the custom4 palette. */
        getCustom4ShadowColor(): string;
        /** Returns the computed hover color for the custom4 palette. */
        getCustom4HoverColor(): string;
        /** Returns the computed active color for the custom4 palette. */
        getCustom4ActiveColor(): string;
        /** Returns the computed row hover color for the custom4 palette. */
        getCustom4RowHoverColor(): string;
        /** Returns the computed stripe color for the custom4 palette. */
        getCustom4StripeColor(): string;
        /** Returns the custom5 base color. */
        getCustom5Color(): string;
        /** Returns the computed button color for the custom5 palette. */
        getCustom5ButtonColor(): string;
        /** Returns the computed border color for the custom5 palette. */
        getCustom5BorderColor(): string;
        /** Returns the computed shadow color for the custom5 palette. */
        getCustom5ShadowColor(): string;
        /** Returns the computed hover color for the custom5 palette. */
        getCustom5HoverColor(): string;
        /** Returns the computed active color for the custom5 palette. */
        getCustom5ActiveColor(): string;
        /** Returns the computed row hover color for the custom5 palette. */
        getCustom5RowHoverColor(): string;
        /** Returns the computed stripe color for the custom5 palette. */
        getCustom5StripeColor(): string;
        /** Returns whether theme inversion (dark/light intent) is currently enabled. */
        isInvertColor(): boolean;
    };
}

export declare const hison: Hison;

/**
 * Configuration interface for global Hisonvue settings.
 *
 * @property primaryColor - The main color applied to all components (hex color string).
 * @property size - Default size used across all components (xs, s, m, l, xl).
 * @property editorConfig - Default config for HNote (based on Vanillanote).
 */
export declare interface HisonConfig extends UtilsConfig, ShieldConfig, DataConfig, LinkConfig {
    componentStyle: ComponentStyleConfig;
    component: ComponentConfig;
    event: HisonvueEvent;
}

export declare const hisonvue: {
    install(app: App, hisonConfig?: HisonConfig): void;
};

export declare interface HisonvueEvent {
    cssEvent: CssEvent;
}

export declare const HLabel: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
href: {
type: PropType<string | null>;
default: null;
};
anchorAttrs: {
type: PropType<Partial<HLabelAnchorAttrs> | Record<string, unknown>>;
default: () => {};
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
toggleTarget: {
type: PropType<string | null>;
default: null;
};
translate: {
type: BooleanConstructor;
default: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
labelRef: Ref<HTMLElement | null, HTMLElement | null>;
labelMethods: ComputedRef<HLabelMethods | {
getType: () => "label";
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
getTitle: () => string;
setTitle: (title: string) => void;
getText: () => string;
setText: (text: string) => void;
getHref: () => string;
setHref: (href?: string | null) => void;
getAnchorAttrs: () => Record<string, unknown>;
replaceAnchorAttrs: (next: Record<string, unknown>) => void;
mergeAnchorAttrs: (patch: Record<string, unknown>) => void;
setAnchorAttr: (key: string, val: unknown) => void;
removeAnchorAttr: (key: string) => void;
isFontBold: () => boolean;
setFontBold: (bold: boolean) => void;
isFontItalic: () => boolean;
setFontItalic: (italic: boolean) => void;
isFontThruline: () => boolean;
setFontThruline: (thruline: boolean) => void;
isFontUnderline: () => boolean;
setFontUnderline: (underline: boolean) => void;
getTextAlign: () => TextAlignValue;
setTextAlign: (textAlign: TextAlign | TextAlignValue) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (type: BackgroundType | BackgroundTypeValue) => void;
getToggleTarget: () => string | null;
setToggleTarget: (id: string | null) => void;
isTranslate: () => boolean;
setTranslate: (translate: boolean) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
href: {
type: PropType<string | null>;
default: null;
};
anchorAttrs: {
type: PropType<Partial<HLabelAnchorAttrs> | Record<string, unknown>>;
default: () => {};
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
toggleTarget: {
type: PropType<string | null>;
default: null;
};
translate: {
type: BooleanConstructor;
default: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
title: Ref<string, string>;
hasHref: ComputedRef<boolean>;
hasToggleTarget: ComputedRef<boolean>;
hasElementSlot: ComputedRef<boolean>;
renderTag: ComputedRef<"a" | "div" | "span">;
internalText: Ref<string, string>;
computedAnchorAttrs: ComputedRef<Record<string, unknown>>;
visibleClass: ComputedRef<"" | "hison-display-none">;
fontBoldClass: ComputedRef<"hison-font-bold" | undefined>;
fontItalicClass: ComputedRef<"hison-font-italic" | undefined>;
fontThrulineClass: ComputedRef<"hison-font-thruline-important" | undefined>;
fontUnderlineClass: ComputedRef<"hison-font-underline-important" | undefined>;
textAlignStyle: ComputedRef<    {
textAlign: "left" | "center" | "right";
}>;
translateAttr: ComputedRef<"no" | undefined>;
translateClass: ComputedRef<"" | "notranslate">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
responsiveClassList: Ref<string[], string[]>;
tabIndex: Ref<number | null, number | null>;
onClick: (e: MouseEvent) => void;
onKeyActivate: (e: KeyboardEvent) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
href: {
type: PropType<string | null>;
default: null;
};
anchorAttrs: {
type: PropType<Partial<HLabelAnchorAttrs> | Record<string, unknown>>;
default: () => {};
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
toggleTarget: {
type: PropType<string | null>;
default: null;
};
translate: {
type: BooleanConstructor;
default: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
textAlign: "left" | "center" | "right" | TextAlign;
translate: boolean;
fontBold: boolean;
fontItalic: boolean;
fontThruline: boolean;
fontUnderline: boolean;
visible: boolean;
tabIndex: string | number | null;
backgroundType: BackgroundTypeValue | BackgroundType;
href: string | null;
anchorAttrs: Record<string, unknown> | Partial<HLabelAnchorAttrs>;
toggleTarget: string | null;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

/**
 * Defines additional attributes that can be bound to an `<a>` element in `HLabel`.
 *
 * These map directly to standard HTML anchor attributes plus ARIA support.
 * Provides flexibility for accessibility and advanced link behavior.
 *
 * @example
 * {
 *   target: '_blank',
 *   rel: 'noopener noreferrer',
 *   download: true,
 *   hreflang: 'en',
 *   'aria-label': 'External link'
 * }
 */
export declare interface HLabelAnchorAttrs {
    /** Where to display the linked URL (`_self`, `_blank`, `_parent`, `_top`, etc.) */
    target?: '_self' | '_blank' | '_parent' | '_top' | (string & {});
    /** Relationship of the target object (e.g., `"noopener noreferrer"`) */
    rel?: string;
    /** Marks link for download; may specify filename */
    download?: boolean | string;
    /** Language of the linked resource (e.g., `"en"`, `"ko"`) */
    hreflang?: string;
    /** Referrer policy for the request */
    referrerpolicy?: 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url';
    /** MIME type of the linked resource */
    type?: string;
    /** Space-separated URLs to notify when link is clicked */
    ping?: string;
    /** ARIA role for accessibility */
    role?: string;
    /** Tab order index for keyboard navigation */
    tabindex?: number;
    /** Accessible label text */
    'aria-label'?: string;
    /** Indicates the current item within a set of related links */
    'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean;
    /** Any additional custom attribute */
    [key: string]: unknown;
}

export declare const HLabelClientOnly: Component;

/**
 * Runtime control methods for `HLabel` component.
 *
 * This interface defines methods that can be accessed via `hison.component.getLabel(id)`.
 * Use these methods to manipulate label state programmatically at runtime.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const lb = hison.component.getLabel('lb1');
 * lb.setVisible(true);
 * lb.setTitle('Go to naver');
 * lb.setHref('https://www.naver.com/');
 * lb.setText('Open Naver'); // works when the label doesn't render an element-slot
 * lb.mergeAnchorAttrs({ target: '_blank' });
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `setText` / `getText` are effective when the label **does not render an element-slot**:
 *   - If the default slot is **text-only**, the text is absorbed into internal state ➜ controllable by `getText/setText`.
 *   - If the default slot contains **any element vnode**, the slot is rendered as-is ➜ `getText()` returns `''` and `setText()` has no effect.
 * - When `href` is a non-empty string, the label renders as an `<a>` and button-like CSS events are attached to the root.
 * - All changes are reactive and reflected immediately in the DOM.
 */
export declare interface HLabelMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     */
    getType(): 'label';
    /**
     * Returns whether the label is visible.
     * - `true`: rendered normally.
     * - `false`: hidden via `hison-display-none` on wrapper.
     */
    isVisible(): boolean;
    /**
     * Sets label visibility.
     * @param visible - `true` to show, `false` to hide.
     */
    setVisible(visible: boolean): void;
    /**
     * Gets the current tooltip (title) text shown on hover.
     */
    getTitle(): string;
    /**
     * Sets the tooltip (title) text shown on hover.
     */
    setTitle(title: string): void;
    /**
     * Gets the label text when controllable:
     * - Returns `''` if the default slot renders **any element vnode**.
     * - Otherwise returns the internally managed text (including text-only slot absorption).
     */
    getText(): string;
    /**
     * Sets the label text when controllable:
     * - No effect if the default slot renders **any element vnode**.
     * - Updates internal reactive text which is rendered either inside `<a>` (when `href` exists) or `<span>`.
     */
    setText(text: string): void;
    /**
     * Gets the current `href`.
     * - Empty string means "no link" (label renders as `<span>` or `<div>` depending on slot).
     */
    getHref(): string;
    /**
     * Sets the `href`.
     * - `null` or empty string disables link mode (label becomes non-anchor).
     * - Non-empty string enables link mode (label renders as `<a>`).
     */
    setHref(href?: string | null): void;
    /**
     * Reads the full `anchorAttrs` (shallow-copied) object used for `<a v-bind="...">`.
     * - Typical keys: `target`, `rel`, `download`, `referrerPolicy`, `hreflang`, etc.
     */
    getAnchorAttrs(): Record<string, unknown>;
    /**
     * Replaces the entire `anchorAttrs` object.
     * - Use to reset all attributes at once.
     */
    replaceAnchorAttrs(next: Record<string, unknown>): void;
    /**
     * Shallow-merges given patch into current `anchorAttrs`.
     * - Use to update a subset of attributes without losing others.
     */
    mergeAnchorAttrs(patch: Record<string, unknown>): void;
    /**
     * Sets a single anchor attribute by key.
     * - Example: `setAnchorAttr('target', '_blank')`
     */
    setAnchorAttr(key: string, val: unknown): void;
    /**
     * Removes a single anchor attribute by key.
     * - Example: `removeAnchorAttr('download')`
     */
    removeAnchorAttr(key: string): void;
    /**
     * Returns whether bold style is applied.
     */
    isFontBold(): boolean;
    /**
     * Applies or removes bold style.
     */
    setFontBold(bold: boolean): void;
    /**
     * Returns whether italic style is applied.
     */
    isFontItalic(): boolean;
    /**
     * Applies or removes italic style.
     */
    setFontItalic(italic: boolean): void;
    /**
     * Returns whether strikethrough is applied.
     */
    isFontThruline(): boolean;
    /**
     * Applies or removes strikethrough style.
     */
    setFontThruline(thruline: boolean): void;
    /**
     * Returns whether underline is applied.
     */
    isFontUnderline(): boolean;
    /**
     * Applies or removes underline style.
     */
    setFontUnderline(underline: boolean): void;
    /**
     * Gets current text alignment ('left' | 'center' | 'right').
     */
    getTextAlign(): TextAlignValue;
    /**
     * Sets text alignment.
     */
    setTextAlign(textAlign: TextAlign | TextAlignValue): void;
    /**
     * Returns whether the label shows border (box-shadow).
     */
    isBorder(): boolean;
    /**
     * Sets whether border (box-shadow) is shown.
     * @param border - `true` to show, `false` to hide.
     */
    setBorder(border: boolean): void;
    /**
     * Gets current background type of the label.
     * - One of 'filled' | 'empty' | 'transparent'.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets background type of the label.
     * - Accepts 'filled' | 'empty' | 'transparent'.
     */
    setBackgroundType(type: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the current toggle target id.
     * - Returns the id of the `HInput` (checkbox/radio) linked to this label, or `null` if none.
     */
    getToggleTarget(): string | null;
    /**
     * Sets or changes the toggle target id.
     * - When assigned, clicking the label (or pressing Enter/Space) will toggle the specified `HInput`.
     * - Accepts `null` to remove toggle linkage.
     */
    setToggleTarget(id: string | null): void;
    /**
     * Returns whether translation is currently enabled.
     * - When `false`, the label has `translate="no"` and `.notranslate` class.
     */
    isTranslate(): boolean;
    /**
     * Enables or disables browser translation prevention.
     * - `true`  → nothing (translation allowed)
     * - `false` → adds `translate="no"` + `.notranslate`
     */
    setTranslate(translate: boolean): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Focuses the label when applicable.
     * - If the label renders as `<a>`, focus moves to the anchor element.
     * - Otherwise (non-anchor), no-op.
     */
    focus(): void;
}

export declare const HLayout: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
backImageSrc: {
type: StringConstructor;
required: boolean;
};
backImageRepeat: {
type: PropType<BackImageRepeatValue | string>;
required: boolean;
validator: (v: any) => boolean;
};
backImageWidth: {
type: StringConstructor;
required: boolean;
};
backImageAlign: {
type: PropType<BackImageAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
backImageVerticalAlign: {
type: PropType<BackImageVerticalAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
backColor: {
type: StringConstructor;
required: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
height: {
type: StringConstructor;
required: boolean;
};
}>, {
layoutRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
layoutMethods: ComputedRef<HLayoutMethods | {
getType: () => "layout";
getBackImageSrc: () => string;
setBackImageSrc: (src: string) => void;
getBackImageRepeat: () => string | BackImageAlignValue;
setBackImageRepeat: (cssText: string | BackImageAlign | BackImageAlignValue) => void;
getBackImageWidth: () => string;
setBackImageWidth: (cssText: string) => void;
getBackImageAlign: () => string | BackImageAlignValue;
setBackImageAlign: (cssText: BackImageAlign | BackImageAlignValue) => void;
getBackImageVerticalAlign: () => string | BackImageVerticalAlignValue;
setBackImageVerticalAlign: (cssText: BackImageVerticalAlign | BackImageVerticalAlignValue) => void;
getBackColor: () => string;
setBackColor: (cssText: string) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getHeight: () => string;
setHeight: (cssText: string) => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
backImageSrc: {
type: StringConstructor;
required: boolean;
};
backImageRepeat: {
type: PropType<BackImageRepeatValue | string>;
required: boolean;
validator: (v: any) => boolean;
};
backImageWidth: {
type: StringConstructor;
required: boolean;
};
backImageAlign: {
type: PropType<BackImageAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
backImageVerticalAlign: {
type: PropType<BackImageVerticalAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
backColor: {
type: StringConstructor;
required: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
height: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
responsiveClassList: Ref<string[], string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
borderClass: ComputedRef<"" | "hison-border">;
computedBackStyle: ComputedRef<Record<string, string>>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
backImageSrc: {
type: StringConstructor;
required: boolean;
};
backImageRepeat: {
type: PropType<BackImageRepeatValue | string>;
required: boolean;
validator: (v: any) => boolean;
};
backImageWidth: {
type: StringConstructor;
required: boolean;
};
backImageAlign: {
type: PropType<BackImageAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
backImageVerticalAlign: {
type: PropType<BackImageVerticalAlignValue>;
required: boolean;
validator: (v: any) => boolean;
};
backColor: {
type: StringConstructor;
required: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
height: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
visible: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HLayoutClientOnly: Component;

/**
 * Runtime control methods for `HLayout` component.
 *
 * This interface defines programmatic access to a layout's visibility,
 * background, border, and layout styling. You can retrieve an instance
 * using `hison.component.getLayout(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const layout = hison.component.getLayout('layout01');
 * layout.setVisible(true);
 * layout.setBackColor('primary');
 * layout.setBackImageSrc('/assets/bg.jpg');
 * layout.setHeight('300px');
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - All methods are reactive and immediately affect the DOM.
 * - Background-related methods directly modify the `style` attribute of the layout.
 */
export declare interface HLayoutMethods extends ComponentMethods {
    /**
     * Returns the type of the layout.
     */
    getType(): 'layout';
    /**
     * Gets the current background image URL (`background-image`).
     */
    getBackImageSrc(): string;
    /**
     * Sets the background image URL.
     * Applies to `background-image` via `url(...)`.
     */
    setBackImageSrc(src: string): void;
    /**
     * Gets the background repeat or scaling mode.
     * Corresponds to `background-repeat` or `background-size`.
     */
    getBackImageRepeat(): string | BackImageAlignValue;
    /**
     * Sets the background repeat or scale style.
     * Examples: `'no-repeat'`, `'repeat'`, `'cover'`, `'contain'`
     */
    setBackImageRepeat(cssText: string | BackImageAlign | BackImageAlignValue): void;
    /**
     * Gets the background image width setting (`background-size`).
     * Examples: `'100%'`, `'300px'`
     */
    getBackImageWidth(): string;
    /**
     * Sets the background image width (`background-size`).
     */
    setBackImageWidth(cssText: string): void;
    /**
     * Gets the horizontal alignment of the background image.
     * Values: `'left'`, `'center'`, `'right'`
     */
    getBackImageAlign(): string | BackImageAlignValue;
    /**
     * Sets the horizontal alignment of the background image.
     */
    setBackImageAlign(cssText: BackImageAlign | BackImageAlignValue): void;
    /**
     * Gets the vertical alignment of the background image.
     * Values: `'top'`, `'center'`, `'bottom'`
     */
    getBackImageVerticalAlign(): string | BackImageVerticalAlignValue;
    /**
     * Sets the vertical alignment of the background image.
     */
    setBackImageVerticalAlign(cssText: BackImageVerticalAlign | BackImageVerticalAlignValue): void;
    /**
     * Gets the background color of the layout.
     * May be a hex color, rgba string, or keyword (e.g. `'primary'`).
     */
    getBackColor(): string;
    /**
     * Sets the background color.
     * Accepts hex, rgba, or `hison` keyword values (`'primary'`, `'danger'`, etc.).
     */
    setBackColor(cssText: string): void;
    /**
     * Returns whether the label shows border (box-shadow).
     */
    isBorder(): boolean;
    /**
     * Sets whether border (box-shadow) is shown.
     * @param border - `true` to show, `false` to hide.
     */
    setBorder(border: boolean): void;
    /**
     * Gets the current height of the layout container.
     * Examples: `'100px'`, `'50%'`, `'auto'`, `'100vh'`
     */
    getHeight(): string;
    /**
     * Sets the height of the layout container.
     */
    setHeight(cssText: string): void;
}

export declare const HList: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
listItemStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
listItemInnerStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
listBorder: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
listBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
listType: {
type: PropType<"ul" | "ol">;
default: string;
validator: (v: any) => boolean;
};
bulletChar: {
type: StringConstructor;
default: string;
};
showMarker: {
type: BooleanConstructor;
default: boolean;
};
textList: {
type: PropType<Array<string | number>>;
default: () => never[];
};
addEvent: {
type: BooleanConstructor;
default: boolean;
};
columns: {
type: NumberConstructor;
default: number;
validator: (v: any) => boolean;
};
columnGap: {
type: PropType<number | string>;
default: number;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
listItemStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
listItemInnerStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
listBorder: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
listBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
listType: {
type: PropType<"ul" | "ol">;
default: string;
validator: (v: any) => boolean;
};
bulletChar: {
type: StringConstructor;
default: string;
};
showMarker: {
type: BooleanConstructor;
default: boolean;
};
textList: {
type: PropType<Array<string | number>>;
default: () => never[];
};
addEvent: {
type: BooleanConstructor;
default: boolean;
};
columns: {
type: NumberConstructor;
default: number;
validator: (v: any) => boolean;
};
columnGap: {
type: PropType<number | string>;
default: number;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
listRef: Ref<HTMLElement | null, HTMLElement | null>;
itemRefs: Ref<HTMLElement[], HTMLElement[]>;
itemInnerRefs: Ref<HTMLElement[], HTMLElement[]>;
renderTag: ComputedRef<"ul" | "ol">;
listType: Ref<"ul" | "ol", "ul" | "ol">;
bulletChar: Ref<string, string>;
showMarker: Ref<boolean, boolean>;
visibleClass: ComputedRef<"" | "hison-display-none">;
borderClass: ComputedRef<"" | "hison-border">;
listBorderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
listBackgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
responsiveClassList: Ref<string[], string[]>;
hasElementSlot: ComputedRef<boolean>;
elementNodes: ComputedRef<VNode<RendererNode, RendererElement, {
[key: string]: any;
}>[]>;
normalizedItems: ComputedRef<(string | number)[]>;
listLayoutStyle: ComputedRef<CSSProperties>;
listItemLayoutStyle: ComputedRef<CSSProperties>;
tabIndex: Ref<number | null, number | null>;
setItemRef: (el: Element | ComponentPublicInstance | null) => void;
setItemInnerRef: (el: Element | ComponentPublicInstance | null) => void;
onItemClick: (e: MouseEvent) => void;
emitItem: (name: "mousedown" | "mouseup" | "mouseover" | "mouseout", e: MouseEvent) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
listItemStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
listItemInnerStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
listBorder: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
listBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
listType: {
type: PropType<"ul" | "ol">;
default: string;
validator: (v: any) => boolean;
};
bulletChar: {
type: StringConstructor;
default: string;
};
showMarker: {
type: BooleanConstructor;
default: boolean;
};
textList: {
type: PropType<Array<string | number>>;
default: () => never[];
};
addEvent: {
type: BooleanConstructor;
default: boolean;
};
columns: {
type: NumberConstructor;
default: number;
validator: (v: any) => boolean;
};
columnGap: {
type: PropType<number | string>;
default: number;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
border: boolean;
columnGap: string | number;
columns: number;
visible: boolean;
tabIndex: string | number | null;
backgroundType: BackgroundTypeValue | BackgroundType;
listBorder: boolean;
listBackgroundType: BackgroundTypeValue | BackgroundType;
listType: "ul" | "ol";
bulletChar: string;
showMarker: boolean;
textList: (string | number)[];
addEvent: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HListClientOnly: Component;

/**
 * Runtime control methods for `HList` component.
 *
 * This interface defines methods that can be accessed via `hison.component.getList(id)`.
 * Use these methods to manipulate list state, appearance, and items programmatically at runtime.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const list = hison.component.getList('list1');
 * list.setVisible(true);
 * list.setListType('ol');
 * list.setShowMarker(true);
 * list.setBulletChar('★');
 * list.setTextList(['Alpha', 'Beta', 'Gamma']);
 * list.setTabIndex(0); // make items focusable
 * list.focus(); // focuses the first item
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - **Slots vs textList**:
 *   - If the default slot contains element vnodes, items render directly from the slot ➜ `getTextList/setTextList` do not affect them.
 *   - If slot is absent or text-only, items are driven by `textList`.
 * - **Keyboard navigation**:
 *   - `tabIndex` applies to all `<li>` items. When set (e.g., `0`), items become focusable and respond to keyboard `Enter` / `Space` as click.
 * - **Event model**:
 *   - When `addEvent = true`, items attach textbox-like CSS states and emit `click/mousedown/mouseup/mouseover/mouseout`.
 *   - Events are `.stop`-scoped internally to avoid propagating into consumer code unexpectedly.
 * - All changes are reactive and reflected immediately in the DOM.
 */
export declare interface HListMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     */
    getType(): 'list';
    /**
     * Returns whether the list is visible.
     * - `true`: rendered normally.
     * - `false`: hidden via `hison-display-none` on wrapper.
     */
    isVisible(): boolean;
    /**
     * Sets list visibility.
     * @param visible - `true` to show, `false` to hide.
     */
    setVisible(visible: boolean): void;
    /**
     * Gets the current list tag type.
     * - `'ul'` → unordered list.
     * - `'ol'` → ordered list.
     */
    getListType(): 'ul' | 'ol';
    /**
     * Sets the list tag type.
     * - Switches rendering between `<ul>` and `<ol>`.
     */
    setListType(type: 'ul' | 'ol'): void;
    /**
     * Returns whether markers are shown.
     * - `true`: show bullet or number depending on listType.
     * - `false`: hide all markers.
     */
    isShowMarker(): boolean;
    /**
     * Toggles marker visibility.
     */
    setShowMarker(v: boolean): void;
    /**
     * Gets the current bullet character (for `ul` type).
     */
    getBulletChar(): string;
    /**
     * Sets the bullet character (used only for `ul` when `showMarker=true`).
     */
    setBulletChar(ch: string): void;
    /**
     * Returns whether the outer list container shows border (box-shadow).
     */
    isBorder(): boolean;
    /**
     * Sets border state for the outer list container.
     */
    setBorder(v: boolean): void;
    /**
     * Returns whether each list item (`li`) shows border (box-shadow).
     */
    isListBorder(): boolean;
    /**
     * Sets border state for each list item (`li`).
     */
    setListBorder(v: boolean): void;
    /**
     * Gets background type of the list container.
     * - One of 'filled' | 'empty' | 'transparent'.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets background type of the list container.
     */
    setBackgroundType(t: BackgroundTypeValue): void;
    /**
     * Gets background type of each list item (`li`).
     * - One of 'filled' | 'empty' | 'transparent'.
     */
    getListBackgroundType(): BackgroundTypeValue;
    /**
     * Sets background type of each list item (`li`).
     */
    setListBackgroundType(t: BackgroundTypeValue): void;
    /**
     * Gets the current text list (shallow-copied).
     * - Effective only when items are driven by `textList` (not slot elements).
     */
    getTextList(): Array<string | number>;
    /**
     * Replaces the text list (for data-driven rendering).
     * - No effect if slot elements are provided.
     */
    setTextList(list: Array<string | number>): void;
    /**
     * Returns whether textbox-like CSS event binding is active.
     * - `true`: list items emit events & apply interactive CSS states.
     * - `false`: static rendering only.
     */
    isAddEvent(): boolean;
    /**
     * Enables or disables textbox-like CSS event binding on list items.
     */
    setAddEvent(v: boolean): void;
    /**
     * Gets the current `tabIndex` applied to each list item.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for each list item.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Returns the total number of list items (`<li>` elements).
     */
    getListRowCount(): number;
    /**
     * Returns the raw `<li>` element at the given index (0-based).
     * - Returns `null` if index is out of bounds.
     */
    getListItem(index: number): HTMLElement | null;
    /**
     * Gets the current number of columns used for item layout.
     * - 1: single column
     * - >=2: multi-column grid-like layout.
     */
    getColumns(): number;
    /**
     * Sets the number of columns used for item layout.
     * - Values <= 1 are clamped to 1.
     */
    setColumns(columns: number): void;
    /**
     * Gets the current horizontal gap between columns.
     * - Number → interpreted as pixels.
     * - String → raw CSS length (e.g. '0.5rem', '8px').
     */
    getColumnGap(): number | string;
    /**
     * Sets the horizontal gap between columns.
     * @param gap - number (px) or CSS length string.
     */
    setColumnGap(gap: number | string): void;
    /**
     * Focuses the list item at `index` (0-based).
     * - Works only when `addEvent` is enabled AND `tabIndex` is neither `null/undefined` nor `-1`.
     * - If `index` is out of bounds or conditions are not met, it's a no-op.
     */
    focus(index?: number): void;
}

export declare const HModal: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
headerVisible: {
type: BooleanConstructor;
default: boolean;
};
footerVisible: {
type: BooleanConstructor;
default: boolean;
};
caption: {
type: PropType<string | null>;
default: null;
};
captionBorder: {
type: BooleanConstructor;
default: boolean;
};
captionBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
captionPlacement: {
type: PropType<ModalPlacement | ModalPlacementValue>;
default: string;
};
closeButtonVisible: {
type: BooleanConstructor;
default: boolean;
};
closeButtonText: {
type: StringConstructor;
default: string;
};
closeButtonTitle: {
type: StringConstructor;
default: string;
};
closeButtonBorder: {
type: BooleanConstructor;
default: boolean;
};
closeButtonBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
closeButtonPlacement: {
type: PropType<ModalPlacement | ModalPlacementValue>;
default: string;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
headerVisible: {
type: BooleanConstructor;
default: boolean;
};
footerVisible: {
type: BooleanConstructor;
default: boolean;
};
caption: {
type: PropType<string | null>;
default: null;
};
captionBorder: {
type: BooleanConstructor;
default: boolean;
};
captionBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
captionPlacement: {
type: PropType<ModalPlacement | ModalPlacementValue>;
default: string;
};
closeButtonVisible: {
type: BooleanConstructor;
default: boolean;
};
closeButtonText: {
type: StringConstructor;
default: string;
};
closeButtonTitle: {
type: StringConstructor;
default: string;
};
closeButtonBorder: {
type: BooleanConstructor;
default: boolean;
};
closeButtonBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
closeButtonPlacement: {
type: PropType<ModalPlacement | ModalPlacementValue>;
default: string;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}> & {}>;
modalRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
modalWrapperRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
caption: Ref<string | null, string | null>;
responsiveClassList: Ref<string[], string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
isOverlayVisible: ComputedRef<boolean>;
headerVisibleComputed: ComputedRef<boolean>;
footerVisibleComputed: ComputedRef<boolean>;
headerHasLeft: ComputedRef<boolean>;
headerHasCenter: ComputedRef<boolean>;
headerHasRight: ComputedRef<boolean>;
showHeaderCaptionLeft: ComputedRef<boolean>;
showHeaderCaptionCenter: ComputedRef<boolean>;
showHeaderCaptionRight: ComputedRef<boolean>;
showHeaderCloseLeft: ComputedRef<boolean>;
showHeaderCloseCenter: ComputedRef<boolean>;
showHeaderCloseRight: ComputedRef<boolean>;
footerHasLeft: ComputedRef<boolean>;
footerHasCenter: ComputedRef<boolean>;
footerHasRight: ComputedRef<boolean>;
showFooterCaptionLeft: ComputedRef<boolean>;
showFooterCaptionCenter: ComputedRef<boolean>;
showFooterCaptionRight: ComputedRef<boolean>;
showFooterCloseLeft: ComputedRef<boolean>;
showFooterCloseCenter: ComputedRef<boolean>;
showFooterCloseRight: ComputedRef<boolean>;
childClassList: ComputedRef<string[]>;
overlayStyleWithZ: ComputedRef<any>;
wrapperStyle: ComputedRef<Record<string, string | number>>;
onOverlayClick: (e: MouseEvent) => void;
onClickCloseButton: (e: MouseEvent) => void;
modalMethods: ComputedRef<HModalMethods | {
getType: () => "modal";
isVisible: () => boolean;
open: () => void | Promise<void>;
close: () => void | Promise<void>;
toggle: () => void | Promise<void>;
setVisible: (v: boolean) => void | Promise<void>;
getZIndex: () => number;
setZIndex: (v: number) => void;
getPosition: () => ScreenPositionValue;
setPosition: (v: ScreenPosition | ScreenPositionValue) => void;
isHeaderVisible: () => boolean;
setHeaderVisible: (v: boolean) => void;
isFooterVisible: () => boolean;
setFooterVisible: (v: boolean) => void;
getCaption: () => string;
setCaption: (text: string | null) => void;
isCaptionBorder: () => boolean;
setCaptionBorder: (v: boolean) => void;
getCaptionBackgroundType: () => BackgroundTypeValue;
setCaptionBackgroundType: (t: BackgroundType | BackgroundTypeValue) => void;
getCaptionPlacement: () => ModalPlacementValue;
setCaptionPlacement: (p: ModalPlacement | ModalPlacementValue) => void;
isCloseButtonVisible: () => boolean;
setCloseButtonVisible: (v: boolean) => void;
isCloseButtonBorder: () => boolean;
setCloseButtonBorder: (v: boolean) => void;
getCloseButtonBackgroundType: () => BackgroundTypeValue;
setCloseButtonBackgroundType: (t: BackgroundType | BackgroundTypeValue) => void;
getButtonPlacement: () => ModalPlacementValue;
setButtonPlacement: (p: ModalPlacement | ModalPlacementValue) => void;
isCloseClickOverlay: () => boolean;
setCloseClickOverlay: (v: boolean) => void;
isOverlayShown: () => boolean;
setOverlayShown: (v: boolean) => void;
isScrollLocked: () => boolean;
setScrollLock: (v: boolean) => void;
isBorder: () => boolean;
setBorder: (v: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (t: BackgroundType | BackgroundTypeValue) => void;
getAnimationClasses: () => {
enter: string;
leave: string;
};
setAnimationClasses: (opt: Partial<{
enter: string;
leave: string;
}>) => void;
isHisonvueComponent: true;
getId: () => string;
reload: () => void;
} | null>;
closeButtonVisible: Ref<boolean, boolean>;
buttonPlacement: Ref<ModalPlacementValue | ModalPlacement, ModalPlacementValue | ModalPlacement>;
captionPlacement: Ref<ModalPlacementValue | ModalPlacement, ModalPlacementValue | ModalPlacement>;
closeButtonText: string;
closeButtonTitle: string;
closeButtonBorder: Ref<boolean, boolean>;
closeButtonBackgroundType: Ref<BackgroundTypeValue | BackgroundType, BackgroundTypeValue | BackgroundType>;
captionBorder: Ref<boolean, boolean>;
captionBackgroundType: Ref<BackgroundTypeValue | BackgroundType, BackgroundTypeValue | BackgroundType>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "close" | "responsive-change" | "open")[], "mounted" | "close" | "responsive-change" | "open", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
headerVisible: {
type: BooleanConstructor;
default: boolean;
};
footerVisible: {
type: BooleanConstructor;
default: boolean;
};
caption: {
type: PropType<string | null>;
default: null;
};
captionBorder: {
type: BooleanConstructor;
default: boolean;
};
captionBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
captionPlacement: {
type: PropType<ModalPlacement | ModalPlacementValue>;
default: string;
};
closeButtonVisible: {
type: BooleanConstructor;
default: boolean;
};
closeButtonText: {
type: StringConstructor;
default: string;
};
closeButtonTitle: {
type: StringConstructor;
default: string;
};
closeButtonBorder: {
type: BooleanConstructor;
default: boolean;
};
closeButtonBackgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
closeButtonPlacement: {
type: PropType<ModalPlacement | ModalPlacementValue>;
default: string;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}>, {
caption: string | null;
border: boolean;
position: ScreenPositionValue | ScreenPosition;
zIndex: number;
visible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
closeButtonVisible: boolean;
closeButtonText: string;
closeButtonTitle: string;
showOverlay: boolean;
closeClickOverlay: boolean;
scrollLock: boolean;
closeButtonBorder: boolean;
closeButtonBackgroundType: BackgroundTypeValue | BackgroundType;
headerVisible: boolean;
footerVisible: boolean;
captionBorder: boolean;
captionBackgroundType: BackgroundTypeValue | BackgroundType;
captionPlacement: ModalPlacementValue | ModalPlacement;
closeButtonPlacement: ModalPlacementValue | ModalPlacement;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HModalClientOnly: Component;

/**
 * Runtime control methods for `HModal` component.
 *
 * This interface defines programmatic access to a modal’s visibility,
 * header/footer sections, caption, close button, overlay, scroll lock,
 * styling, and animation settings. You can retrieve an instance
 * using `hison.component.getModal(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const modal = hison.component.getModal('modal01');
 * modal.open();
 * modal.setCaption('Hello world');
 * modal.setPosition('top-right');
 * modal.setZIndex(2000);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - Visibility (`visible`) is **only** controlled by these methods. The `visible` prop is an initial state.
 * - `scrollLock` is reference-counted across multiple modals; closing one does not unlock if others are still open.
 * - `zIndex` applies to the wrapper; the overlay is always rendered at `zIndex - 1`.
 */
export declare interface HModalMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * Always `'modal'`.
     */
    getType(): 'modal';
    /**
     * Returns whether the modal is currently visible.
     */
    isVisible(): boolean;
    /**
     * Opens the modal (with animation and scroll lock).
     */
    open(): void | Promise<void>;
    /**
     * Closes the modal (with animation and scroll unlock).
     */
    close(): void | Promise<void>;
    /**
     * Toggles modal open/close state.
     */
    toggle(): void | Promise<void>;
    /**
     * Sets modal visibility.
     * @param v `true` → open, `false` → close
     */
    setVisible(v: boolean): void | Promise<void>;
    /**
     * Gets the current z-index of the modal wrapper.
     */
    getZIndex(): number;
    /**
     * Sets the z-index of the modal wrapper (overlay will use `zIndex - 1`).
     */
    setZIndex(v: number): void;
    /**
     * Gets the current fixed screen position of the modal wrapper.
     */
    getPosition(): ScreenPositionValue;
    /**
     * Sets the modal wrapper position on screen.
     * Accepts any `ScreenPosition` value (e.g. `'top-left'`, `'middle-center'`).
     */
    setPosition(v: ScreenPosition | ScreenPositionValue): void;
    /**
     * Returns whether the header section is visible.
     */
    isHeaderVisible(): boolean;
    /**
     * Sets whether the header section is visible.
     */
    setHeaderVisible(v: boolean): void;
    /**
     * Returns whether the footer section is visible.
     */
    isFooterVisible(): boolean;
    /**
     * Sets whether the footer section is visible.
     */
    setFooterVisible(v: boolean): void;
    /**
     * Gets the current caption text (empty string if none).
     */
    getCaption(): string;
    /**
     * Sets the caption text (null or empty hides caption).
     */
    setCaption(text: string | null): void;
    /**
     * Returns whether the caption has border styling.
     */
    isCaptionBorder(): boolean;
    /**
     * Sets whether the caption shows border styling.
     */
    setCaptionBorder(v: boolean): void;
    /**
     * Gets the background type of the caption.
     */
    getCaptionBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the caption.
     */
    setCaptionBackgroundType(t: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the caption placement (header/footer + side).
     */
    getCaptionPlacement(): ModalPlacementValue;
    /**
     * Sets the caption placement (header/footer + side).
     */
    setCaptionPlacement(p: ModalPlacement | ModalPlacementValue): void;
    /**
     * Returns whether the close button is visible.
     */
    isCloseButtonVisible(): boolean;
    /**
     * Sets whether the close button is visible.
     */
    setCloseButtonVisible(v: boolean): void;
    /**
     * Returns whether the close button has border styling.
     */
    isCloseButtonBorder(): boolean;
    /**
     * Sets whether the close button shows border styling.
     */
    setCloseButtonBorder(v: boolean): void;
    /**
     * Gets the background type of the close button.
     */
    getCloseButtonBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the close button.
     */
    setCloseButtonBackgroundType(t: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the close button placement (header/footer + side).
     */
    getButtonPlacement(): ModalPlacementValue;
    /**
     * Sets the close button placement (header/footer + side).
     */
    setButtonPlacement(p: ModalPlacement | ModalPlacementValue): void;
    /**
     * Returns whether clicking the overlay closes the modal.
     */
    isCloseClickOverlay(): boolean;
    /**
     * Sets whether clicking the overlay closes the modal.
     */
    setCloseClickOverlay(v: boolean): void;
    /**
     * Returns whether the overlay (backdrop) is shown.
     */
    isOverlayShown(): boolean;
    /**
     * Sets whether the overlay (backdrop) is shown.
     */
    setOverlayShown(v: boolean): void;
    /**
     * Returns whether scroll lock is enabled for this modal.
     */
    isScrollLocked(): boolean;
    /**
     * Enables or disables scroll lock.
     * If enabled while visible, locks immediately.
     * If disabled while visible, unlocks immediately.
     */
    setScrollLock(v: boolean): void;
    /**
     * Returns whether the modal has border styling.
     */
    isBorder(): boolean;
    /**
     * Sets whether the modal shows border styling.
     */
    setBorder(v: boolean): void;
    /**
     * Gets the background type of the modal.
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the modal.
     */
    setBackgroundType(t: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the CSS class names for enter/leave animations.
     */
    getAnimationClasses(): {
        enter: string;
        leave: string;
    };
    /**
     * Sets one or both CSS animation classes for modal enter/leave.
     * Example: `{ enter: 'fade-in', leave: 'fade-out' }`
     */
    setAnimationClasses(opt: Partial<{
        enter: string;
        leave: string;
    }>): void;
}

export declare const HNote: DefineComponent<ExtractPropTypes<    {
textareaBeforeClick: PropType<(event: Event) => boolean>;
textareaAfterClick: PropType<(event: Event) => void>;
textareaBeforeFocus: PropType<(event: Event) => boolean>;
textareaAfterFocus: PropType<(event: Event) => void>;
textareaBeforeBlur: PropType<(event: Event) => boolean>;
textareaAfterBlur: PropType<(event: Event) => void>;
paragraphStyleSelectBeforeClick: PropType<(event: Event) => boolean>;
paragraphStyleSelectAfterClick: PropType<(event: Event) => void>;
toolToggleBeforeClick: PropType<(event: Event) => boolean>;
toolToggleAfterClick: PropType<(event: Event) => void>;
styleNomalBeforeClick: PropType<(event: Event) => boolean>;
styleNomalAfterClick: PropType<(event: Event) => void>;
styleHeader1BeforeClick: PropType<(event: Event) => boolean>;
styleHeader1AfterClick: PropType<(event: Event) => void>;
styleHeader2BeforeClick: PropType<(event: Event) => boolean>;
styleHeader2AfterClick: PropType<(event: Event) => void>;
styleHeader3BeforeClick: PropType<(event: Event) => boolean>;
styleHeader3AfterClick: PropType<(event: Event) => void>;
styleHeader4BeforeClick: PropType<(event: Event) => boolean>;
styleHeader4AfterClick: PropType<(event: Event) => void>;
styleHeader5BeforeClick: PropType<(event: Event) => boolean>;
styleHeader5AfterClick: PropType<(event: Event) => void>;
styleHeader6BeforeClick: PropType<(event: Event) => boolean>;
styleHeader6AfterClick: PropType<(event: Event) => void>;
boldBeforeClick: PropType<(event: Event) => boolean>;
boldAfterClick: PropType<(event: Event) => void>;
underlineBeforeClick: PropType<(event: Event) => boolean>;
underlineAfterClick: PropType<(event: Event) => void>;
italicBeforeClick: PropType<(event: Event) => boolean>;
italicAfterClick: PropType<(event: Event) => void>;
ulBeforeClick: PropType<(event: Event) => boolean>;
ulAfterClick: PropType<(event: Event) => void>;
olBeforeClick: PropType<(event: Event) => boolean>;
olAfterClick: PropType<(event: Event) => void>;
textAlignSelectBeforeClick: PropType<(event: Event) => boolean>;
textAlignSelectAfterClick: PropType<(event: Event) => void>;
textAlignLeftBeforeClick: PropType<(event: Event) => boolean>;
textAlignLeftAfterClick: PropType<(event: Event) => void>;
textAlignCenterBeforeClick: PropType<(event: Event) => boolean>;
textAlignCenterAfterClick: PropType<(event: Event) => void>;
textAlignRightBeforeClick: PropType<(event: Event) => boolean>;
textAlignRightAfterClick: PropType<(event: Event) => void>;
attLinkBeforeClick: PropType<(event: Event) => boolean>;
attLinkAfterClick: PropType<(event: Event) => void>;
attFileBeforeClick: PropType<(event: Event) => boolean>;
attFileAfterClick: PropType<(event: Event) => void>;
attImageBeforeClick: PropType<(event: Event) => boolean>;
attImageAfterClick: PropType<(event: Event) => void>;
attVideoBeforeClick: PropType<(event: Event) => boolean>;
attVideoAfterClick: PropType<(event: Event) => void>;
fontSizeBoxBeforeClick: PropType<(event: Event) => boolean>;
fontSizeBoxAfterClick: PropType<(event: Event) => void>;
fontSizeBeforeClick: PropType<(event: Event) => boolean>;
fontSizeAfterClick: PropType<(event: Event) => void>;
fontSizeBeforeInput: PropType<(event: Event) => boolean>;
fontSizeAfterInput: PropType<(event: Event) => void>;
fontSizeBeforeBlur: PropType<(event: Event) => boolean>;
fontSizeAfterBlur: PropType<(event: Event) => void>;
letterSpacingBoxBeforeClick: PropType<(event: Event) => boolean>;
letterSpacingBoxAfterClick: PropType<(event: Event) => void>;
letterSpacingBeforeClick: PropType<(event: Event) => boolean>;
letterSpacingAfterClick: PropType<(event: Event) => void>;
letterSpacingBeforeInput: PropType<(event: Event) => boolean>;
letterSpacingAfterInput: PropType<(event: Event) => void>;
letterSpacingBeforeBlur: PropType<(event: Event) => boolean>;
letterSpacingAfterBlur: PropType<(event: Event) => void>;
lineHeightBoxBeforeClick: PropType<(event: Event) => boolean>;
lineHeightBoxAfterClick: PropType<(event: Event) => void>;
lineHeightBeforeClick: PropType<(event: Event) => boolean>;
lineHeightAfterClick: PropType<(event: Event) => void>;
lineHeightBeforeInput: PropType<(event: Event) => boolean>;
lineHeightAfterInput: PropType<(event: Event) => void>;
lineHeightBeforeBlur: PropType<(event: Event) => boolean>;
lineHeightAfterBlur: PropType<(event: Event) => void>;
fontFamilySelectBeforeClick: PropType<(event: Event) => boolean>;
fontFamilySelectAfterClick: PropType<(event: Event) => void>;
colorTextSelectBeforeClick: PropType<(event: Event) => boolean>;
colorTextSelectAfterClick: PropType<(event: Event) => void>;
colorTextSelectBoxBeforeClick: PropType<(event: Event) => boolean>;
colorTextSelectBoxAfterClick: PropType<(event: Event) => void>;
colorText0BeforeClick: PropType<(event: Event) => boolean>;
colorText0AfterClick: PropType<(event: Event) => void>;
colorText1BeforeClick: PropType<(event: Event) => boolean>;
colorText1AfterClick: PropType<(event: Event) => void>;
colorText2BeforeClick: PropType<(event: Event) => boolean>;
colorText2AfterClick: PropType<(event: Event) => void>;
colorText3BeforeClick: PropType<(event: Event) => boolean>;
colorText3AfterClick: PropType<(event: Event) => void>;
colorText4BeforeClick: PropType<(event: Event) => boolean>;
colorText4AfterClick: PropType<(event: Event) => void>;
colorText5BeforeClick: PropType<(event: Event) => boolean>;
colorText5AfterClick: PropType<(event: Event) => void>;
colorText6BeforeClick: PropType<(event: Event) => boolean>;
colorText6AfterClick: PropType<(event: Event) => void>;
colorText7BeforeClick: PropType<(event: Event) => boolean>;
colorText7AfterClick: PropType<(event: Event) => void>;
colorTextRBeforeClick: PropType<(event: Event) => boolean>;
colorTextRAfterClick: PropType<(event: Event) => void>;
colorTextRBeforeInput: PropType<(event: Event) => boolean>;
colorTextRAfterInput: PropType<(event: Event) => void>;
colorTextRBeforeBlur: PropType<(event: Event) => boolean>;
colorTextRAfterBlur: PropType<(event: Event) => void>;
colorTextGBeforeClick: PropType<(event: Event) => boolean>;
colorTextGAfterClick: PropType<(event: Event) => void>;
colorTextGBeforeInput: PropType<(event: Event) => boolean>;
colorTextGAfterInput: PropType<(event: Event) => void>;
colorTextGBeforeBlur: PropType<(event: Event) => boolean>;
colorTextGAfterBlur: PropType<(event: Event) => void>;
colorTextBBeforeClick: PropType<(event: Event) => boolean>;
colorTextBAfterClick: PropType<(event: Event) => void>;
colorTextBBeforeInput: PropType<(event: Event) => boolean>;
colorTextBAfterInput: PropType<(event: Event) => void>;
colorTextBBeforeBlur: PropType<(event: Event) => boolean>;
colorTextBAfterBlur: PropType<(event: Event) => void>;
colorTextOpacityBeforeClick: PropType<(event: Event) => boolean>;
colorTextOpacityAfterClick: PropType<(event: Event) => void>;
colorTextOpacityBeforeInput: PropType<(event: Event) => boolean>;
colorTextOpacityAfterInput: PropType<(event: Event) => void>;
colorTextOpacityBeforeBlur: PropType<(event: Event) => boolean>;
colorTextOpacityAfterBlur: PropType<(event: Event) => void>;
colorBackSelectBeforeClick: PropType<(event: Event) => boolean>;
colorBackSelectAfterClick: PropType<(event: Event) => void>;
colorBackSelectBoxBeforeClick: PropType<(event: Event) => boolean>;
colorBackSelectBoxAfterClick: PropType<(event: Event) => void>;
colorBack0BeforeClick: PropType<(event: Event) => boolean>;
colorBack0AfterClick: PropType<(event: Event) => void>;
colorBack1BeforeClick: PropType<(event: Event) => boolean>;
colorBack1AfterClick: PropType<(event: Event) => void>;
colorBack2BeforeClick: PropType<(event: Event) => boolean>;
colorBack2AfterClick: PropType<(event: Event) => void>;
colorBack3BeforeClick: PropType<(event: Event) => boolean>;
colorBack3AfterClick: PropType<(event: Event) => void>;
colorBack4BeforeClick: PropType<(event: Event) => boolean>;
colorBack4AfterClick: PropType<(event: Event) => void>;
colorBack5BeforeClick: PropType<(event: Event) => boolean>;
colorBack5AfterClick: PropType<(event: Event) => void>;
colorBack6BeforeClick: PropType<(event: Event) => boolean>;
colorBack6AfterClick: PropType<(event: Event) => void>;
colorBack7BeforeClick: PropType<(event: Event) => boolean>;
colorBack7AfterClick: PropType<(event: Event) => void>;
colorBackRBeforeClick: PropType<(event: Event) => boolean>;
colorBackRAfterClick: PropType<(event: Event) => void>;
colorBackRBeforeInput: PropType<(event: Event) => boolean>;
colorBackRAfterInput: PropType<(event: Event) => void>;
colorBackRBeforeBlur: PropType<(event: Event) => boolean>;
colorBackRAfterBlur: PropType<(event: Event) => void>;
colorBackGBeforeClick: PropType<(event: Event) => boolean>;
colorBackGAfterClick: PropType<(event: Event) => void>;
colorBackGBeforeInput: PropType<(event: Event) => boolean>;
colorBackGAfterInput: PropType<(event: Event) => void>;
colorBackGBeforeBlur: PropType<(event: Event) => boolean>;
colorBackGAfterBlur: PropType<(event: Event) => void>;
colorBackBBeforeClick: PropType<(event: Event) => boolean>;
colorBackBAfterClick: PropType<(event: Event) => void>;
colorBackBBeforeInput: PropType<(event: Event) => boolean>;
colorBackBAfterInput: PropType<(event: Event) => void>;
colorBackBBeforeBlur: PropType<(event: Event) => boolean>;
colorBackBAfterBlur: PropType<(event: Event) => void>;
colorBackOpacityBeforeClick: PropType<(event: Event) => boolean>;
colorBackOpacityAfterClick: PropType<(event: Event) => void>;
colorBackOpacityBeforeInput: PropType<(event: Event) => boolean>;
colorBackOpacityAfterInput: PropType<(event: Event) => void>;
colorBackOpacityBeforeBlur: PropType<(event: Event) => boolean>;
colorBackOpacityAfterBlur: PropType<(event: Event) => void>;
formatClearBeforeClick: PropType<(event: Event) => boolean>;
formatClearAfterClick: PropType<(event: Event) => void>;
undoBeforeClick: PropType<(event: Event) => boolean>;
undoAfterClick: PropType<(event: Event) => void>;
redoBeforeClick: PropType<(event: Event) => boolean>;
redoAfterClick: PropType<(event: Event) => void>;
helpBeforeClick: PropType<(event: Event) => boolean>;
helpAfterClick: PropType<(event: Event) => void>;
modalBackBeforeClick: PropType<(event: Event) => boolean>;
modalBackAfterClick: PropType<(event: Event) => void>;
attLinkModalBeforeClick: PropType<(event: Event) => boolean>;
attLinkModalAfterClick: PropType<(event: Event) => void>;
attLinkTextBeforeInput: PropType<(event: Event) => boolean>;
attLinkTextAfterInput: PropType<(event: Event) => void>;
attLinkTextBeforeBlur: PropType<(event: Event) => boolean>;
attLinkTextAfterBlur: PropType<(event: Event) => void>;
attLinkHrefBeforeInput: PropType<(event: Event) => boolean>;
attLinkHrefAfterInput: PropType<(event: Event) => void>;
attLinkHrefBeforeBlur: PropType<(event: Event) => boolean>;
attLinkHrefAfterBlur: PropType<(event: Event) => void>;
attLinkInsertBeforeClick: PropType<(event: Event) => boolean>;
attLinkInsertAfterClick: PropType<(event: Event) => void>;
attFileModalBeforeClick: PropType<(event: Event) => boolean>;
attFileModalAfterClick: PropType<(event: Event) => void>;
attFileUploadBeforeClick: PropType<(event: Event) => boolean>;
attFileUploadAfterClick: PropType<(event: Event) => void>;
attFileUploadDivBeforeDragover: PropType<(event: Event) => boolean>;
attFileUploadDivAfterDragover: PropType<(event: Event) => void>;
attFileUploadDivBeforeDrop: PropType<(event: Event) => boolean>;
attFileUploadDivAfterDrop: PropType<(event: Event) => void>;
attFileUploadDivBeforeClick: PropType<(event: Event) => boolean>;
attFileUploadDivAfterClick: PropType<(event: Event) => void>;
attFileUploadBeforeInput: PropType<(event: Event) => boolean>;
attFileUploadAfterInput: PropType<(event: Event) => void>;
attFileUploadBeforeBlur: PropType<(event: Event) => boolean>;
attFileUploadAfterBlur: PropType<(event: Event) => void>;
attFileInsertBeforeClick: PropType<(event: Event) => boolean>;
attFileInsertAfterClick: PropType<(event: Event) => void>;
attLinkTooltipEditBeforeClick: PropType<(event: Event) => boolean>;
attLinkTooltipEditAfterClick: PropType<(event: Event) => void>;
attLinkTooltipUnlinkBeforeClick: PropType<(event: Event) => boolean>;
attLinkTooltipUnlinkAfterClick: PropType<(event: Event) => void>;
attImageModalBeforeClick: PropType<(event: Event) => boolean>;
attImageModalAfterClick: PropType<(event: Event) => void>;
attImageUploadViewBeforeDragover: PropType<(event: Event) => boolean>;
attImageUploadViewAfterDragover: PropType<(event: Event) => void>;
attImageUploadViewBeforeDrop: PropType<(event: Event) => boolean>;
attImageUploadViewAfterDrop: PropType<(event: Event) => void>;
attImageUploadViewBeforeClick: PropType<(event: Event) => boolean>;
attImageUploadViewAfterClick: PropType<(event: Event) => void>;
attImageViewPreBeforeClick: PropType<(event: Event) => boolean>;
attImageViewPreAfterClick: PropType<(event: Event) => void>;
attImageViewNextBeforeClick: PropType<(event: Event) => boolean>;
attImageViewNextAfterClick: PropType<(event: Event) => void>;
attImageUploadBeforeInput: PropType<(event: Event) => boolean>;
attImageUploadAfterInput: PropType<(event: Event) => void>;
attImageUploadBeforeBlur: PropType<(event: Event) => boolean>;
attImageUploadAfterBlur: PropType<(event: Event) => void>;
attImageURLBeforeInput: PropType<(event: Event) => boolean>;
attImageURLAfterInput: PropType<(event: Event) => void>;
attImageURLBeforeBlur: PropType<(event: Event) => boolean>;
attImageURLAfterBlur: PropType<(event: Event) => void>;
attImageInsertBeforeClick: PropType<(event: Event) => boolean>;
attImageInsertAfterClick: PropType<(event: Event) => void>;
attVideoModalBeforeClick: PropType<(event: Event) => boolean>;
attVideoModalAfterClick: PropType<(event: Event) => void>;
attVideoEmbedIdBeforeInput: PropType<(event: Event) => boolean>;
attVideoEmbedIdAfterInput: PropType<(event: Event) => void>;
attVideoEmbedIdBeforeBlur: PropType<(event: Event) => boolean>;
attVideoEmbedIdAfterBlur: PropType<(event: Event) => void>;
attVideoWidthBeforeInput: PropType<(event: Event) => boolean>;
attVideoWidthAfterInput: PropType<(event: Event) => void>;
attVideoWidthBeforeBlur: PropType<(event: Event) => boolean>;
attVideoWidthAfterBlur: PropType<(event: Event) => void>;
attVideoHeightBeforeInput: PropType<(event: Event) => boolean>;
attVideoHeightAfterInput: PropType<(event: Event) => void>;
attVideoHeightBeforeBlur: PropType<(event: Event) => boolean>;
attVideoHeightAfterBlur: PropType<(event: Event) => void>;
attVideoInsertBeforeClick: PropType<(event: Event) => boolean>;
attVideoInsertAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeInput: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterInput: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeBlur: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterBlur: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeKeyup: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterKeyup: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioNoneBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioNoneAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioLeftBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioLeftAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioRightBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioRightAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioSquareBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioSquareAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioRadiusBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioRadiusAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioCircleBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioCircleAfterClick: PropType<(event: Event) => void>;
helpModalBeforeClick: PropType<(event: Event) => boolean>;
helpModalAfterClick: PropType<(event: Event) => void>;
placeholderBeforeClick: PropType<(event: Event) => boolean>;
placeholderAfterClick: PropType<(event: Event) => void>;
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
noteModeByDevice: {
type: PropType<NoteModeByDevice | NoteModeByDeviceValue>;
required: boolean;
validator: (v: any) => boolean;
};
toolPosition: {
type: PropType<NoteToolPosition | ToolPositionValue>;
required: boolean;
validator: (v: any) => boolean;
};
toolDefaultLine: {
type: NumberConstructor;
required: boolean;
};
toolToggle: {
type: BooleanConstructor;
default: boolean;
};
textareaWidth: {
type: StringConstructor;
required: boolean;
};
textareaHeight: {
type: StringConstructor;
required: boolean;
};
textareaMaxWidth: {
type: StringConstructor;
required: boolean;
};
textareaMaxHeight: {
type: StringConstructor;
required: boolean;
};
textareaHeightIsModify: {
type: BooleanConstructor;
default: boolean;
};
placeholderIsVisible: {
type: BooleanConstructor;
default: boolean;
};
placeholderAddTop: {
type: NumberConstructor;
required: boolean;
};
placeholderAddLeft: {
type: NumberConstructor;
required: boolean;
};
placeholderWidth: {
type: StringConstructor;
required: boolean;
};
placeholderColor: {
type: StringConstructor;
required: boolean;
};
placeholderBackgroundColor: {
type: StringConstructor;
required: boolean;
};
placeholderTitle: {
type: StringConstructor;
required: boolean;
};
placeholderTextContent: {
type: StringConstructor;
required: boolean;
};
attFilePreventTypes: {
type: StringConstructor;
required: boolean;
};
attFileAcceptTypes: {
type: StringConstructor;
required: boolean;
};
attFileMaxSize: {
type: NumberConstructor;
required: boolean;
default: number;
};
attImagePreventTypes: {
type: StringConstructor;
required: boolean;
};
attImageAcceptTypes: {
type: StringConstructor;
required: boolean;
};
attImageMaxSize: {
type: NumberConstructor;
required: boolean;
default: number;
};
defaultFontSize: {
type: NumberConstructor;
required: boolean;
};
defaultLineHeight: {
type: NumberConstructor;
required: boolean;
};
defaultFontFamily: {
type: StringConstructor;
required: boolean;
};
defaultToolFontFamily: {
type: StringConstructor;
required: boolean;
};
addFontFamily: {
type: StringConstructor;
required: boolean;
};
removeFontFamily: {
type: StringConstructor;
required: boolean;
};
language: {
type: StringConstructor;
required: boolean;
};
recodeLimit: {
type: StringConstructor;
required: boolean;
};
sizeLevelDesktop: {
type: NumberConstructor;
required: boolean;
};
sizeLevelMobile: {
type: NumberConstructor;
required: boolean;
};
color: {
type: PropType<Color | string>;
required: boolean;
};
invertColor: {
type: BooleanConstructor;
default: boolean;
};
usingParagraphStyle: {
type: BooleanConstructor;
default: boolean;
};
usingBold: {
type: BooleanConstructor;
default: boolean;
};
usingUnderline: {
type: BooleanConstructor;
default: boolean;
};
usingItalic: {
type: BooleanConstructor;
default: boolean;
};
usingUl: {
type: BooleanConstructor;
default: boolean;
};
usingOl: {
type: BooleanConstructor;
default: boolean;
};
usingTextAlign: {
type: BooleanConstructor;
default: boolean;
};
usingAttLink: {
type: BooleanConstructor;
default: boolean;
};
usingAttFile: {
type: BooleanConstructor;
default: boolean;
};
usingAttImage: {
type: BooleanConstructor;
default: boolean;
};
usingAttVideo: {
type: BooleanConstructor;
default: boolean;
};
usingFontSize: {
type: BooleanConstructor;
default: boolean;
};
usingLetterSpacing: {
type: BooleanConstructor;
default: boolean;
};
usingLineHeight: {
type: BooleanConstructor;
default: boolean;
};
usingFontFamily: {
type: BooleanConstructor;
default: boolean;
};
usingColorText: {
type: BooleanConstructor;
default: boolean;
};
usingColorBack: {
type: BooleanConstructor;
default: boolean;
};
usingFormatClear: {
type: BooleanConstructor;
default: boolean;
};
usingUndo: {
type: BooleanConstructor;
default: boolean;
};
usingRedo: {
type: BooleanConstructor;
default: boolean;
};
usingHelp: {
type: BooleanConstructor;
default: boolean;
};
usingParagraphAllStyle: {
type: BooleanConstructor;
default: boolean;
};
usingCharacterStyle: {
type: BooleanConstructor;
default: boolean;
};
usingCharacterSize: {
type: BooleanConstructor;
default: boolean;
};
usingAttachFile: {
type: BooleanConstructor;
default: boolean;
};
usingDo: {
type: BooleanConstructor;
default: boolean;
};
required: {
type: BooleanConstructor;
default: boolean;
};
modelValue: {
type: PropType<NoteData>;
required: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
editorWrap: Ref<HTMLElement | null, HTMLElement | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
textareaBeforeClick: PropType<(event: Event) => boolean>;
textareaAfterClick: PropType<(event: Event) => void>;
textareaBeforeFocus: PropType<(event: Event) => boolean>;
textareaAfterFocus: PropType<(event: Event) => void>;
textareaBeforeBlur: PropType<(event: Event) => boolean>;
textareaAfterBlur: PropType<(event: Event) => void>;
paragraphStyleSelectBeforeClick: PropType<(event: Event) => boolean>;
paragraphStyleSelectAfterClick: PropType<(event: Event) => void>;
toolToggleBeforeClick: PropType<(event: Event) => boolean>;
toolToggleAfterClick: PropType<(event: Event) => void>;
styleNomalBeforeClick: PropType<(event: Event) => boolean>;
styleNomalAfterClick: PropType<(event: Event) => void>;
styleHeader1BeforeClick: PropType<(event: Event) => boolean>;
styleHeader1AfterClick: PropType<(event: Event) => void>;
styleHeader2BeforeClick: PropType<(event: Event) => boolean>;
styleHeader2AfterClick: PropType<(event: Event) => void>;
styleHeader3BeforeClick: PropType<(event: Event) => boolean>;
styleHeader3AfterClick: PropType<(event: Event) => void>;
styleHeader4BeforeClick: PropType<(event: Event) => boolean>;
styleHeader4AfterClick: PropType<(event: Event) => void>;
styleHeader5BeforeClick: PropType<(event: Event) => boolean>;
styleHeader5AfterClick: PropType<(event: Event) => void>;
styleHeader6BeforeClick: PropType<(event: Event) => boolean>;
styleHeader6AfterClick: PropType<(event: Event) => void>;
boldBeforeClick: PropType<(event: Event) => boolean>;
boldAfterClick: PropType<(event: Event) => void>;
underlineBeforeClick: PropType<(event: Event) => boolean>;
underlineAfterClick: PropType<(event: Event) => void>;
italicBeforeClick: PropType<(event: Event) => boolean>;
italicAfterClick: PropType<(event: Event) => void>;
ulBeforeClick: PropType<(event: Event) => boolean>;
ulAfterClick: PropType<(event: Event) => void>;
olBeforeClick: PropType<(event: Event) => boolean>;
olAfterClick: PropType<(event: Event) => void>;
textAlignSelectBeforeClick: PropType<(event: Event) => boolean>;
textAlignSelectAfterClick: PropType<(event: Event) => void>;
textAlignLeftBeforeClick: PropType<(event: Event) => boolean>;
textAlignLeftAfterClick: PropType<(event: Event) => void>;
textAlignCenterBeforeClick: PropType<(event: Event) => boolean>;
textAlignCenterAfterClick: PropType<(event: Event) => void>;
textAlignRightBeforeClick: PropType<(event: Event) => boolean>;
textAlignRightAfterClick: PropType<(event: Event) => void>;
attLinkBeforeClick: PropType<(event: Event) => boolean>;
attLinkAfterClick: PropType<(event: Event) => void>;
attFileBeforeClick: PropType<(event: Event) => boolean>;
attFileAfterClick: PropType<(event: Event) => void>;
attImageBeforeClick: PropType<(event: Event) => boolean>;
attImageAfterClick: PropType<(event: Event) => void>;
attVideoBeforeClick: PropType<(event: Event) => boolean>;
attVideoAfterClick: PropType<(event: Event) => void>;
fontSizeBoxBeforeClick: PropType<(event: Event) => boolean>;
fontSizeBoxAfterClick: PropType<(event: Event) => void>;
fontSizeBeforeClick: PropType<(event: Event) => boolean>;
fontSizeAfterClick: PropType<(event: Event) => void>;
fontSizeBeforeInput: PropType<(event: Event) => boolean>;
fontSizeAfterInput: PropType<(event: Event) => void>;
fontSizeBeforeBlur: PropType<(event: Event) => boolean>;
fontSizeAfterBlur: PropType<(event: Event) => void>;
letterSpacingBoxBeforeClick: PropType<(event: Event) => boolean>;
letterSpacingBoxAfterClick: PropType<(event: Event) => void>;
letterSpacingBeforeClick: PropType<(event: Event) => boolean>;
letterSpacingAfterClick: PropType<(event: Event) => void>;
letterSpacingBeforeInput: PropType<(event: Event) => boolean>;
letterSpacingAfterInput: PropType<(event: Event) => void>;
letterSpacingBeforeBlur: PropType<(event: Event) => boolean>;
letterSpacingAfterBlur: PropType<(event: Event) => void>;
lineHeightBoxBeforeClick: PropType<(event: Event) => boolean>;
lineHeightBoxAfterClick: PropType<(event: Event) => void>;
lineHeightBeforeClick: PropType<(event: Event) => boolean>;
lineHeightAfterClick: PropType<(event: Event) => void>;
lineHeightBeforeInput: PropType<(event: Event) => boolean>;
lineHeightAfterInput: PropType<(event: Event) => void>;
lineHeightBeforeBlur: PropType<(event: Event) => boolean>;
lineHeightAfterBlur: PropType<(event: Event) => void>;
fontFamilySelectBeforeClick: PropType<(event: Event) => boolean>;
fontFamilySelectAfterClick: PropType<(event: Event) => void>;
colorTextSelectBeforeClick: PropType<(event: Event) => boolean>;
colorTextSelectAfterClick: PropType<(event: Event) => void>;
colorTextSelectBoxBeforeClick: PropType<(event: Event) => boolean>;
colorTextSelectBoxAfterClick: PropType<(event: Event) => void>;
colorText0BeforeClick: PropType<(event: Event) => boolean>;
colorText0AfterClick: PropType<(event: Event) => void>;
colorText1BeforeClick: PropType<(event: Event) => boolean>;
colorText1AfterClick: PropType<(event: Event) => void>;
colorText2BeforeClick: PropType<(event: Event) => boolean>;
colorText2AfterClick: PropType<(event: Event) => void>;
colorText3BeforeClick: PropType<(event: Event) => boolean>;
colorText3AfterClick: PropType<(event: Event) => void>;
colorText4BeforeClick: PropType<(event: Event) => boolean>;
colorText4AfterClick: PropType<(event: Event) => void>;
colorText5BeforeClick: PropType<(event: Event) => boolean>;
colorText5AfterClick: PropType<(event: Event) => void>;
colorText6BeforeClick: PropType<(event: Event) => boolean>;
colorText6AfterClick: PropType<(event: Event) => void>;
colorText7BeforeClick: PropType<(event: Event) => boolean>;
colorText7AfterClick: PropType<(event: Event) => void>;
colorTextRBeforeClick: PropType<(event: Event) => boolean>;
colorTextRAfterClick: PropType<(event: Event) => void>;
colorTextRBeforeInput: PropType<(event: Event) => boolean>;
colorTextRAfterInput: PropType<(event: Event) => void>;
colorTextRBeforeBlur: PropType<(event: Event) => boolean>;
colorTextRAfterBlur: PropType<(event: Event) => void>;
colorTextGBeforeClick: PropType<(event: Event) => boolean>;
colorTextGAfterClick: PropType<(event: Event) => void>;
colorTextGBeforeInput: PropType<(event: Event) => boolean>;
colorTextGAfterInput: PropType<(event: Event) => void>;
colorTextGBeforeBlur: PropType<(event: Event) => boolean>;
colorTextGAfterBlur: PropType<(event: Event) => void>;
colorTextBBeforeClick: PropType<(event: Event) => boolean>;
colorTextBAfterClick: PropType<(event: Event) => void>;
colorTextBBeforeInput: PropType<(event: Event) => boolean>;
colorTextBAfterInput: PropType<(event: Event) => void>;
colorTextBBeforeBlur: PropType<(event: Event) => boolean>;
colorTextBAfterBlur: PropType<(event: Event) => void>;
colorTextOpacityBeforeClick: PropType<(event: Event) => boolean>;
colorTextOpacityAfterClick: PropType<(event: Event) => void>;
colorTextOpacityBeforeInput: PropType<(event: Event) => boolean>;
colorTextOpacityAfterInput: PropType<(event: Event) => void>;
colorTextOpacityBeforeBlur: PropType<(event: Event) => boolean>;
colorTextOpacityAfterBlur: PropType<(event: Event) => void>;
colorBackSelectBeforeClick: PropType<(event: Event) => boolean>;
colorBackSelectAfterClick: PropType<(event: Event) => void>;
colorBackSelectBoxBeforeClick: PropType<(event: Event) => boolean>;
colorBackSelectBoxAfterClick: PropType<(event: Event) => void>;
colorBack0BeforeClick: PropType<(event: Event) => boolean>;
colorBack0AfterClick: PropType<(event: Event) => void>;
colorBack1BeforeClick: PropType<(event: Event) => boolean>;
colorBack1AfterClick: PropType<(event: Event) => void>;
colorBack2BeforeClick: PropType<(event: Event) => boolean>;
colorBack2AfterClick: PropType<(event: Event) => void>;
colorBack3BeforeClick: PropType<(event: Event) => boolean>;
colorBack3AfterClick: PropType<(event: Event) => void>;
colorBack4BeforeClick: PropType<(event: Event) => boolean>;
colorBack4AfterClick: PropType<(event: Event) => void>;
colorBack5BeforeClick: PropType<(event: Event) => boolean>;
colorBack5AfterClick: PropType<(event: Event) => void>;
colorBack6BeforeClick: PropType<(event: Event) => boolean>;
colorBack6AfterClick: PropType<(event: Event) => void>;
colorBack7BeforeClick: PropType<(event: Event) => boolean>;
colorBack7AfterClick: PropType<(event: Event) => void>;
colorBackRBeforeClick: PropType<(event: Event) => boolean>;
colorBackRAfterClick: PropType<(event: Event) => void>;
colorBackRBeforeInput: PropType<(event: Event) => boolean>;
colorBackRAfterInput: PropType<(event: Event) => void>;
colorBackRBeforeBlur: PropType<(event: Event) => boolean>;
colorBackRAfterBlur: PropType<(event: Event) => void>;
colorBackGBeforeClick: PropType<(event: Event) => boolean>;
colorBackGAfterClick: PropType<(event: Event) => void>;
colorBackGBeforeInput: PropType<(event: Event) => boolean>;
colorBackGAfterInput: PropType<(event: Event) => void>;
colorBackGBeforeBlur: PropType<(event: Event) => boolean>;
colorBackGAfterBlur: PropType<(event: Event) => void>;
colorBackBBeforeClick: PropType<(event: Event) => boolean>;
colorBackBAfterClick: PropType<(event: Event) => void>;
colorBackBBeforeInput: PropType<(event: Event) => boolean>;
colorBackBAfterInput: PropType<(event: Event) => void>;
colorBackBBeforeBlur: PropType<(event: Event) => boolean>;
colorBackBAfterBlur: PropType<(event: Event) => void>;
colorBackOpacityBeforeClick: PropType<(event: Event) => boolean>;
colorBackOpacityAfterClick: PropType<(event: Event) => void>;
colorBackOpacityBeforeInput: PropType<(event: Event) => boolean>;
colorBackOpacityAfterInput: PropType<(event: Event) => void>;
colorBackOpacityBeforeBlur: PropType<(event: Event) => boolean>;
colorBackOpacityAfterBlur: PropType<(event: Event) => void>;
formatClearBeforeClick: PropType<(event: Event) => boolean>;
formatClearAfterClick: PropType<(event: Event) => void>;
undoBeforeClick: PropType<(event: Event) => boolean>;
undoAfterClick: PropType<(event: Event) => void>;
redoBeforeClick: PropType<(event: Event) => boolean>;
redoAfterClick: PropType<(event: Event) => void>;
helpBeforeClick: PropType<(event: Event) => boolean>;
helpAfterClick: PropType<(event: Event) => void>;
modalBackBeforeClick: PropType<(event: Event) => boolean>;
modalBackAfterClick: PropType<(event: Event) => void>;
attLinkModalBeforeClick: PropType<(event: Event) => boolean>;
attLinkModalAfterClick: PropType<(event: Event) => void>;
attLinkTextBeforeInput: PropType<(event: Event) => boolean>;
attLinkTextAfterInput: PropType<(event: Event) => void>;
attLinkTextBeforeBlur: PropType<(event: Event) => boolean>;
attLinkTextAfterBlur: PropType<(event: Event) => void>;
attLinkHrefBeforeInput: PropType<(event: Event) => boolean>;
attLinkHrefAfterInput: PropType<(event: Event) => void>;
attLinkHrefBeforeBlur: PropType<(event: Event) => boolean>;
attLinkHrefAfterBlur: PropType<(event: Event) => void>;
attLinkInsertBeforeClick: PropType<(event: Event) => boolean>;
attLinkInsertAfterClick: PropType<(event: Event) => void>;
attFileModalBeforeClick: PropType<(event: Event) => boolean>;
attFileModalAfterClick: PropType<(event: Event) => void>;
attFileUploadBeforeClick: PropType<(event: Event) => boolean>;
attFileUploadAfterClick: PropType<(event: Event) => void>;
attFileUploadDivBeforeDragover: PropType<(event: Event) => boolean>;
attFileUploadDivAfterDragover: PropType<(event: Event) => void>;
attFileUploadDivBeforeDrop: PropType<(event: Event) => boolean>;
attFileUploadDivAfterDrop: PropType<(event: Event) => void>;
attFileUploadDivBeforeClick: PropType<(event: Event) => boolean>;
attFileUploadDivAfterClick: PropType<(event: Event) => void>;
attFileUploadBeforeInput: PropType<(event: Event) => boolean>;
attFileUploadAfterInput: PropType<(event: Event) => void>;
attFileUploadBeforeBlur: PropType<(event: Event) => boolean>;
attFileUploadAfterBlur: PropType<(event: Event) => void>;
attFileInsertBeforeClick: PropType<(event: Event) => boolean>;
attFileInsertAfterClick: PropType<(event: Event) => void>;
attLinkTooltipEditBeforeClick: PropType<(event: Event) => boolean>;
attLinkTooltipEditAfterClick: PropType<(event: Event) => void>;
attLinkTooltipUnlinkBeforeClick: PropType<(event: Event) => boolean>;
attLinkTooltipUnlinkAfterClick: PropType<(event: Event) => void>;
attImageModalBeforeClick: PropType<(event: Event) => boolean>;
attImageModalAfterClick: PropType<(event: Event) => void>;
attImageUploadViewBeforeDragover: PropType<(event: Event) => boolean>;
attImageUploadViewAfterDragover: PropType<(event: Event) => void>;
attImageUploadViewBeforeDrop: PropType<(event: Event) => boolean>;
attImageUploadViewAfterDrop: PropType<(event: Event) => void>;
attImageUploadViewBeforeClick: PropType<(event: Event) => boolean>;
attImageUploadViewAfterClick: PropType<(event: Event) => void>;
attImageViewPreBeforeClick: PropType<(event: Event) => boolean>;
attImageViewPreAfterClick: PropType<(event: Event) => void>;
attImageViewNextBeforeClick: PropType<(event: Event) => boolean>;
attImageViewNextAfterClick: PropType<(event: Event) => void>;
attImageUploadBeforeInput: PropType<(event: Event) => boolean>;
attImageUploadAfterInput: PropType<(event: Event) => void>;
attImageUploadBeforeBlur: PropType<(event: Event) => boolean>;
attImageUploadAfterBlur: PropType<(event: Event) => void>;
attImageURLBeforeInput: PropType<(event: Event) => boolean>;
attImageURLAfterInput: PropType<(event: Event) => void>;
attImageURLBeforeBlur: PropType<(event: Event) => boolean>;
attImageURLAfterBlur: PropType<(event: Event) => void>;
attImageInsertBeforeClick: PropType<(event: Event) => boolean>;
attImageInsertAfterClick: PropType<(event: Event) => void>;
attVideoModalBeforeClick: PropType<(event: Event) => boolean>;
attVideoModalAfterClick: PropType<(event: Event) => void>;
attVideoEmbedIdBeforeInput: PropType<(event: Event) => boolean>;
attVideoEmbedIdAfterInput: PropType<(event: Event) => void>;
attVideoEmbedIdBeforeBlur: PropType<(event: Event) => boolean>;
attVideoEmbedIdAfterBlur: PropType<(event: Event) => void>;
attVideoWidthBeforeInput: PropType<(event: Event) => boolean>;
attVideoWidthAfterInput: PropType<(event: Event) => void>;
attVideoWidthBeforeBlur: PropType<(event: Event) => boolean>;
attVideoWidthAfterBlur: PropType<(event: Event) => void>;
attVideoHeightBeforeInput: PropType<(event: Event) => boolean>;
attVideoHeightAfterInput: PropType<(event: Event) => void>;
attVideoHeightBeforeBlur: PropType<(event: Event) => boolean>;
attVideoHeightAfterBlur: PropType<(event: Event) => void>;
attVideoInsertBeforeClick: PropType<(event: Event) => boolean>;
attVideoInsertAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeInput: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterInput: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeBlur: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterBlur: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeKeyup: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterKeyup: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioNoneBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioNoneAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioLeftBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioLeftAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioRightBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioRightAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioSquareBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioSquareAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioRadiusBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioRadiusAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioCircleBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioCircleAfterClick: PropType<(event: Event) => void>;
helpModalBeforeClick: PropType<(event: Event) => boolean>;
helpModalAfterClick: PropType<(event: Event) => void>;
placeholderBeforeClick: PropType<(event: Event) => boolean>;
placeholderAfterClick: PropType<(event: Event) => void>;
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
noteModeByDevice: {
type: PropType<NoteModeByDevice | NoteModeByDeviceValue>;
required: boolean;
validator: (v: any) => boolean;
};
toolPosition: {
type: PropType<NoteToolPosition | ToolPositionValue>;
required: boolean;
validator: (v: any) => boolean;
};
toolDefaultLine: {
type: NumberConstructor;
required: boolean;
};
toolToggle: {
type: BooleanConstructor;
default: boolean;
};
textareaWidth: {
type: StringConstructor;
required: boolean;
};
textareaHeight: {
type: StringConstructor;
required: boolean;
};
textareaMaxWidth: {
type: StringConstructor;
required: boolean;
};
textareaMaxHeight: {
type: StringConstructor;
required: boolean;
};
textareaHeightIsModify: {
type: BooleanConstructor;
default: boolean;
};
placeholderIsVisible: {
type: BooleanConstructor;
default: boolean;
};
placeholderAddTop: {
type: NumberConstructor;
required: boolean;
};
placeholderAddLeft: {
type: NumberConstructor;
required: boolean;
};
placeholderWidth: {
type: StringConstructor;
required: boolean;
};
placeholderColor: {
type: StringConstructor;
required: boolean;
};
placeholderBackgroundColor: {
type: StringConstructor;
required: boolean;
};
placeholderTitle: {
type: StringConstructor;
required: boolean;
};
placeholderTextContent: {
type: StringConstructor;
required: boolean;
};
attFilePreventTypes: {
type: StringConstructor;
required: boolean;
};
attFileAcceptTypes: {
type: StringConstructor;
required: boolean;
};
attFileMaxSize: {
type: NumberConstructor;
required: boolean;
default: number;
};
attImagePreventTypes: {
type: StringConstructor;
required: boolean;
};
attImageAcceptTypes: {
type: StringConstructor;
required: boolean;
};
attImageMaxSize: {
type: NumberConstructor;
required: boolean;
default: number;
};
defaultFontSize: {
type: NumberConstructor;
required: boolean;
};
defaultLineHeight: {
type: NumberConstructor;
required: boolean;
};
defaultFontFamily: {
type: StringConstructor;
required: boolean;
};
defaultToolFontFamily: {
type: StringConstructor;
required: boolean;
};
addFontFamily: {
type: StringConstructor;
required: boolean;
};
removeFontFamily: {
type: StringConstructor;
required: boolean;
};
language: {
type: StringConstructor;
required: boolean;
};
recodeLimit: {
type: StringConstructor;
required: boolean;
};
sizeLevelDesktop: {
type: NumberConstructor;
required: boolean;
};
sizeLevelMobile: {
type: NumberConstructor;
required: boolean;
};
color: {
type: PropType<Color | string>;
required: boolean;
};
invertColor: {
type: BooleanConstructor;
default: boolean;
};
usingParagraphStyle: {
type: BooleanConstructor;
default: boolean;
};
usingBold: {
type: BooleanConstructor;
default: boolean;
};
usingUnderline: {
type: BooleanConstructor;
default: boolean;
};
usingItalic: {
type: BooleanConstructor;
default: boolean;
};
usingUl: {
type: BooleanConstructor;
default: boolean;
};
usingOl: {
type: BooleanConstructor;
default: boolean;
};
usingTextAlign: {
type: BooleanConstructor;
default: boolean;
};
usingAttLink: {
type: BooleanConstructor;
default: boolean;
};
usingAttFile: {
type: BooleanConstructor;
default: boolean;
};
usingAttImage: {
type: BooleanConstructor;
default: boolean;
};
usingAttVideo: {
type: BooleanConstructor;
default: boolean;
};
usingFontSize: {
type: BooleanConstructor;
default: boolean;
};
usingLetterSpacing: {
type: BooleanConstructor;
default: boolean;
};
usingLineHeight: {
type: BooleanConstructor;
default: boolean;
};
usingFontFamily: {
type: BooleanConstructor;
default: boolean;
};
usingColorText: {
type: BooleanConstructor;
default: boolean;
};
usingColorBack: {
type: BooleanConstructor;
default: boolean;
};
usingFormatClear: {
type: BooleanConstructor;
default: boolean;
};
usingUndo: {
type: BooleanConstructor;
default: boolean;
};
usingRedo: {
type: BooleanConstructor;
default: boolean;
};
usingHelp: {
type: BooleanConstructor;
default: boolean;
};
usingParagraphAllStyle: {
type: BooleanConstructor;
default: boolean;
};
usingCharacterStyle: {
type: BooleanConstructor;
default: boolean;
};
usingCharacterSize: {
type: BooleanConstructor;
default: boolean;
};
usingAttachFile: {
type: BooleanConstructor;
default: boolean;
};
usingDo: {
type: BooleanConstructor;
default: boolean;
};
required: {
type: BooleanConstructor;
default: boolean;
};
modelValue: {
type: PropType<NoteData>;
required: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}> & {}>;
bindAttrs: ComputedRef<Record<string, string>>;
responsiveClassList: Ref<string[], string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
requiredClass: ComputedRef<"hison-note-required" | undefined>;
editModeClass: ComputedRef<string | undefined>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change" | "update:modelValue")[], "mounted" | "responsive-change" | "update:modelValue", PublicProps, Readonly<ExtractPropTypes<    {
textareaBeforeClick: PropType<(event: Event) => boolean>;
textareaAfterClick: PropType<(event: Event) => void>;
textareaBeforeFocus: PropType<(event: Event) => boolean>;
textareaAfterFocus: PropType<(event: Event) => void>;
textareaBeforeBlur: PropType<(event: Event) => boolean>;
textareaAfterBlur: PropType<(event: Event) => void>;
paragraphStyleSelectBeforeClick: PropType<(event: Event) => boolean>;
paragraphStyleSelectAfterClick: PropType<(event: Event) => void>;
toolToggleBeforeClick: PropType<(event: Event) => boolean>;
toolToggleAfterClick: PropType<(event: Event) => void>;
styleNomalBeforeClick: PropType<(event: Event) => boolean>;
styleNomalAfterClick: PropType<(event: Event) => void>;
styleHeader1BeforeClick: PropType<(event: Event) => boolean>;
styleHeader1AfterClick: PropType<(event: Event) => void>;
styleHeader2BeforeClick: PropType<(event: Event) => boolean>;
styleHeader2AfterClick: PropType<(event: Event) => void>;
styleHeader3BeforeClick: PropType<(event: Event) => boolean>;
styleHeader3AfterClick: PropType<(event: Event) => void>;
styleHeader4BeforeClick: PropType<(event: Event) => boolean>;
styleHeader4AfterClick: PropType<(event: Event) => void>;
styleHeader5BeforeClick: PropType<(event: Event) => boolean>;
styleHeader5AfterClick: PropType<(event: Event) => void>;
styleHeader6BeforeClick: PropType<(event: Event) => boolean>;
styleHeader6AfterClick: PropType<(event: Event) => void>;
boldBeforeClick: PropType<(event: Event) => boolean>;
boldAfterClick: PropType<(event: Event) => void>;
underlineBeforeClick: PropType<(event: Event) => boolean>;
underlineAfterClick: PropType<(event: Event) => void>;
italicBeforeClick: PropType<(event: Event) => boolean>;
italicAfterClick: PropType<(event: Event) => void>;
ulBeforeClick: PropType<(event: Event) => boolean>;
ulAfterClick: PropType<(event: Event) => void>;
olBeforeClick: PropType<(event: Event) => boolean>;
olAfterClick: PropType<(event: Event) => void>;
textAlignSelectBeforeClick: PropType<(event: Event) => boolean>;
textAlignSelectAfterClick: PropType<(event: Event) => void>;
textAlignLeftBeforeClick: PropType<(event: Event) => boolean>;
textAlignLeftAfterClick: PropType<(event: Event) => void>;
textAlignCenterBeforeClick: PropType<(event: Event) => boolean>;
textAlignCenterAfterClick: PropType<(event: Event) => void>;
textAlignRightBeforeClick: PropType<(event: Event) => boolean>;
textAlignRightAfterClick: PropType<(event: Event) => void>;
attLinkBeforeClick: PropType<(event: Event) => boolean>;
attLinkAfterClick: PropType<(event: Event) => void>;
attFileBeforeClick: PropType<(event: Event) => boolean>;
attFileAfterClick: PropType<(event: Event) => void>;
attImageBeforeClick: PropType<(event: Event) => boolean>;
attImageAfterClick: PropType<(event: Event) => void>;
attVideoBeforeClick: PropType<(event: Event) => boolean>;
attVideoAfterClick: PropType<(event: Event) => void>;
fontSizeBoxBeforeClick: PropType<(event: Event) => boolean>;
fontSizeBoxAfterClick: PropType<(event: Event) => void>;
fontSizeBeforeClick: PropType<(event: Event) => boolean>;
fontSizeAfterClick: PropType<(event: Event) => void>;
fontSizeBeforeInput: PropType<(event: Event) => boolean>;
fontSizeAfterInput: PropType<(event: Event) => void>;
fontSizeBeforeBlur: PropType<(event: Event) => boolean>;
fontSizeAfterBlur: PropType<(event: Event) => void>;
letterSpacingBoxBeforeClick: PropType<(event: Event) => boolean>;
letterSpacingBoxAfterClick: PropType<(event: Event) => void>;
letterSpacingBeforeClick: PropType<(event: Event) => boolean>;
letterSpacingAfterClick: PropType<(event: Event) => void>;
letterSpacingBeforeInput: PropType<(event: Event) => boolean>;
letterSpacingAfterInput: PropType<(event: Event) => void>;
letterSpacingBeforeBlur: PropType<(event: Event) => boolean>;
letterSpacingAfterBlur: PropType<(event: Event) => void>;
lineHeightBoxBeforeClick: PropType<(event: Event) => boolean>;
lineHeightBoxAfterClick: PropType<(event: Event) => void>;
lineHeightBeforeClick: PropType<(event: Event) => boolean>;
lineHeightAfterClick: PropType<(event: Event) => void>;
lineHeightBeforeInput: PropType<(event: Event) => boolean>;
lineHeightAfterInput: PropType<(event: Event) => void>;
lineHeightBeforeBlur: PropType<(event: Event) => boolean>;
lineHeightAfterBlur: PropType<(event: Event) => void>;
fontFamilySelectBeforeClick: PropType<(event: Event) => boolean>;
fontFamilySelectAfterClick: PropType<(event: Event) => void>;
colorTextSelectBeforeClick: PropType<(event: Event) => boolean>;
colorTextSelectAfterClick: PropType<(event: Event) => void>;
colorTextSelectBoxBeforeClick: PropType<(event: Event) => boolean>;
colorTextSelectBoxAfterClick: PropType<(event: Event) => void>;
colorText0BeforeClick: PropType<(event: Event) => boolean>;
colorText0AfterClick: PropType<(event: Event) => void>;
colorText1BeforeClick: PropType<(event: Event) => boolean>;
colorText1AfterClick: PropType<(event: Event) => void>;
colorText2BeforeClick: PropType<(event: Event) => boolean>;
colorText2AfterClick: PropType<(event: Event) => void>;
colorText3BeforeClick: PropType<(event: Event) => boolean>;
colorText3AfterClick: PropType<(event: Event) => void>;
colorText4BeforeClick: PropType<(event: Event) => boolean>;
colorText4AfterClick: PropType<(event: Event) => void>;
colorText5BeforeClick: PropType<(event: Event) => boolean>;
colorText5AfterClick: PropType<(event: Event) => void>;
colorText6BeforeClick: PropType<(event: Event) => boolean>;
colorText6AfterClick: PropType<(event: Event) => void>;
colorText7BeforeClick: PropType<(event: Event) => boolean>;
colorText7AfterClick: PropType<(event: Event) => void>;
colorTextRBeforeClick: PropType<(event: Event) => boolean>;
colorTextRAfterClick: PropType<(event: Event) => void>;
colorTextRBeforeInput: PropType<(event: Event) => boolean>;
colorTextRAfterInput: PropType<(event: Event) => void>;
colorTextRBeforeBlur: PropType<(event: Event) => boolean>;
colorTextRAfterBlur: PropType<(event: Event) => void>;
colorTextGBeforeClick: PropType<(event: Event) => boolean>;
colorTextGAfterClick: PropType<(event: Event) => void>;
colorTextGBeforeInput: PropType<(event: Event) => boolean>;
colorTextGAfterInput: PropType<(event: Event) => void>;
colorTextGBeforeBlur: PropType<(event: Event) => boolean>;
colorTextGAfterBlur: PropType<(event: Event) => void>;
colorTextBBeforeClick: PropType<(event: Event) => boolean>;
colorTextBAfterClick: PropType<(event: Event) => void>;
colorTextBBeforeInput: PropType<(event: Event) => boolean>;
colorTextBAfterInput: PropType<(event: Event) => void>;
colorTextBBeforeBlur: PropType<(event: Event) => boolean>;
colorTextBAfterBlur: PropType<(event: Event) => void>;
colorTextOpacityBeforeClick: PropType<(event: Event) => boolean>;
colorTextOpacityAfterClick: PropType<(event: Event) => void>;
colorTextOpacityBeforeInput: PropType<(event: Event) => boolean>;
colorTextOpacityAfterInput: PropType<(event: Event) => void>;
colorTextOpacityBeforeBlur: PropType<(event: Event) => boolean>;
colorTextOpacityAfterBlur: PropType<(event: Event) => void>;
colorBackSelectBeforeClick: PropType<(event: Event) => boolean>;
colorBackSelectAfterClick: PropType<(event: Event) => void>;
colorBackSelectBoxBeforeClick: PropType<(event: Event) => boolean>;
colorBackSelectBoxAfterClick: PropType<(event: Event) => void>;
colorBack0BeforeClick: PropType<(event: Event) => boolean>;
colorBack0AfterClick: PropType<(event: Event) => void>;
colorBack1BeforeClick: PropType<(event: Event) => boolean>;
colorBack1AfterClick: PropType<(event: Event) => void>;
colorBack2BeforeClick: PropType<(event: Event) => boolean>;
colorBack2AfterClick: PropType<(event: Event) => void>;
colorBack3BeforeClick: PropType<(event: Event) => boolean>;
colorBack3AfterClick: PropType<(event: Event) => void>;
colorBack4BeforeClick: PropType<(event: Event) => boolean>;
colorBack4AfterClick: PropType<(event: Event) => void>;
colorBack5BeforeClick: PropType<(event: Event) => boolean>;
colorBack5AfterClick: PropType<(event: Event) => void>;
colorBack6BeforeClick: PropType<(event: Event) => boolean>;
colorBack6AfterClick: PropType<(event: Event) => void>;
colorBack7BeforeClick: PropType<(event: Event) => boolean>;
colorBack7AfterClick: PropType<(event: Event) => void>;
colorBackRBeforeClick: PropType<(event: Event) => boolean>;
colorBackRAfterClick: PropType<(event: Event) => void>;
colorBackRBeforeInput: PropType<(event: Event) => boolean>;
colorBackRAfterInput: PropType<(event: Event) => void>;
colorBackRBeforeBlur: PropType<(event: Event) => boolean>;
colorBackRAfterBlur: PropType<(event: Event) => void>;
colorBackGBeforeClick: PropType<(event: Event) => boolean>;
colorBackGAfterClick: PropType<(event: Event) => void>;
colorBackGBeforeInput: PropType<(event: Event) => boolean>;
colorBackGAfterInput: PropType<(event: Event) => void>;
colorBackGBeforeBlur: PropType<(event: Event) => boolean>;
colorBackGAfterBlur: PropType<(event: Event) => void>;
colorBackBBeforeClick: PropType<(event: Event) => boolean>;
colorBackBAfterClick: PropType<(event: Event) => void>;
colorBackBBeforeInput: PropType<(event: Event) => boolean>;
colorBackBAfterInput: PropType<(event: Event) => void>;
colorBackBBeforeBlur: PropType<(event: Event) => boolean>;
colorBackBAfterBlur: PropType<(event: Event) => void>;
colorBackOpacityBeforeClick: PropType<(event: Event) => boolean>;
colorBackOpacityAfterClick: PropType<(event: Event) => void>;
colorBackOpacityBeforeInput: PropType<(event: Event) => boolean>;
colorBackOpacityAfterInput: PropType<(event: Event) => void>;
colorBackOpacityBeforeBlur: PropType<(event: Event) => boolean>;
colorBackOpacityAfterBlur: PropType<(event: Event) => void>;
formatClearBeforeClick: PropType<(event: Event) => boolean>;
formatClearAfterClick: PropType<(event: Event) => void>;
undoBeforeClick: PropType<(event: Event) => boolean>;
undoAfterClick: PropType<(event: Event) => void>;
redoBeforeClick: PropType<(event: Event) => boolean>;
redoAfterClick: PropType<(event: Event) => void>;
helpBeforeClick: PropType<(event: Event) => boolean>;
helpAfterClick: PropType<(event: Event) => void>;
modalBackBeforeClick: PropType<(event: Event) => boolean>;
modalBackAfterClick: PropType<(event: Event) => void>;
attLinkModalBeforeClick: PropType<(event: Event) => boolean>;
attLinkModalAfterClick: PropType<(event: Event) => void>;
attLinkTextBeforeInput: PropType<(event: Event) => boolean>;
attLinkTextAfterInput: PropType<(event: Event) => void>;
attLinkTextBeforeBlur: PropType<(event: Event) => boolean>;
attLinkTextAfterBlur: PropType<(event: Event) => void>;
attLinkHrefBeforeInput: PropType<(event: Event) => boolean>;
attLinkHrefAfterInput: PropType<(event: Event) => void>;
attLinkHrefBeforeBlur: PropType<(event: Event) => boolean>;
attLinkHrefAfterBlur: PropType<(event: Event) => void>;
attLinkInsertBeforeClick: PropType<(event: Event) => boolean>;
attLinkInsertAfterClick: PropType<(event: Event) => void>;
attFileModalBeforeClick: PropType<(event: Event) => boolean>;
attFileModalAfterClick: PropType<(event: Event) => void>;
attFileUploadBeforeClick: PropType<(event: Event) => boolean>;
attFileUploadAfterClick: PropType<(event: Event) => void>;
attFileUploadDivBeforeDragover: PropType<(event: Event) => boolean>;
attFileUploadDivAfterDragover: PropType<(event: Event) => void>;
attFileUploadDivBeforeDrop: PropType<(event: Event) => boolean>;
attFileUploadDivAfterDrop: PropType<(event: Event) => void>;
attFileUploadDivBeforeClick: PropType<(event: Event) => boolean>;
attFileUploadDivAfterClick: PropType<(event: Event) => void>;
attFileUploadBeforeInput: PropType<(event: Event) => boolean>;
attFileUploadAfterInput: PropType<(event: Event) => void>;
attFileUploadBeforeBlur: PropType<(event: Event) => boolean>;
attFileUploadAfterBlur: PropType<(event: Event) => void>;
attFileInsertBeforeClick: PropType<(event: Event) => boolean>;
attFileInsertAfterClick: PropType<(event: Event) => void>;
attLinkTooltipEditBeforeClick: PropType<(event: Event) => boolean>;
attLinkTooltipEditAfterClick: PropType<(event: Event) => void>;
attLinkTooltipUnlinkBeforeClick: PropType<(event: Event) => boolean>;
attLinkTooltipUnlinkAfterClick: PropType<(event: Event) => void>;
attImageModalBeforeClick: PropType<(event: Event) => boolean>;
attImageModalAfterClick: PropType<(event: Event) => void>;
attImageUploadViewBeforeDragover: PropType<(event: Event) => boolean>;
attImageUploadViewAfterDragover: PropType<(event: Event) => void>;
attImageUploadViewBeforeDrop: PropType<(event: Event) => boolean>;
attImageUploadViewAfterDrop: PropType<(event: Event) => void>;
attImageUploadViewBeforeClick: PropType<(event: Event) => boolean>;
attImageUploadViewAfterClick: PropType<(event: Event) => void>;
attImageViewPreBeforeClick: PropType<(event: Event) => boolean>;
attImageViewPreAfterClick: PropType<(event: Event) => void>;
attImageViewNextBeforeClick: PropType<(event: Event) => boolean>;
attImageViewNextAfterClick: PropType<(event: Event) => void>;
attImageUploadBeforeInput: PropType<(event: Event) => boolean>;
attImageUploadAfterInput: PropType<(event: Event) => void>;
attImageUploadBeforeBlur: PropType<(event: Event) => boolean>;
attImageUploadAfterBlur: PropType<(event: Event) => void>;
attImageURLBeforeInput: PropType<(event: Event) => boolean>;
attImageURLAfterInput: PropType<(event: Event) => void>;
attImageURLBeforeBlur: PropType<(event: Event) => boolean>;
attImageURLAfterBlur: PropType<(event: Event) => void>;
attImageInsertBeforeClick: PropType<(event: Event) => boolean>;
attImageInsertAfterClick: PropType<(event: Event) => void>;
attVideoModalBeforeClick: PropType<(event: Event) => boolean>;
attVideoModalAfterClick: PropType<(event: Event) => void>;
attVideoEmbedIdBeforeInput: PropType<(event: Event) => boolean>;
attVideoEmbedIdAfterInput: PropType<(event: Event) => void>;
attVideoEmbedIdBeforeBlur: PropType<(event: Event) => boolean>;
attVideoEmbedIdAfterBlur: PropType<(event: Event) => void>;
attVideoWidthBeforeInput: PropType<(event: Event) => boolean>;
attVideoWidthAfterInput: PropType<(event: Event) => void>;
attVideoWidthBeforeBlur: PropType<(event: Event) => boolean>;
attVideoWidthAfterBlur: PropType<(event: Event) => void>;
attVideoHeightBeforeInput: PropType<(event: Event) => boolean>;
attVideoHeightAfterInput: PropType<(event: Event) => void>;
attVideoHeightBeforeBlur: PropType<(event: Event) => boolean>;
attVideoHeightAfterBlur: PropType<(event: Event) => void>;
attVideoInsertBeforeClick: PropType<(event: Event) => boolean>;
attVideoInsertAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeInput: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterInput: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeBlur: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterBlur: PropType<(event: Event) => void>;
attImageAndVideoTooltipWidthBeforeKeyup: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipWidthAfterKeyup: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioNoneBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioNoneAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioLeftBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioLeftAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipFloatRadioRightBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipFloatRadioRightAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioSquareBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioSquareAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioRadiusBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioRadiusAfterClick: PropType<(event: Event) => void>;
attImageAndVideoTooltipShapeRadioCircleBeforeClick: PropType<(event: Event) => boolean>;
attImageAndVideoTooltipShapeRadioCircleAfterClick: PropType<(event: Event) => void>;
helpModalBeforeClick: PropType<(event: Event) => boolean>;
helpModalAfterClick: PropType<(event: Event) => void>;
placeholderBeforeClick: PropType<(event: Event) => boolean>;
placeholderAfterClick: PropType<(event: Event) => void>;
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
editMode: {
type: PropType<EditMode | EditModeValue>;
default: EditMode;
validator: (v: any) => boolean;
};
noteModeByDevice: {
type: PropType<NoteModeByDevice | NoteModeByDeviceValue>;
required: boolean;
validator: (v: any) => boolean;
};
toolPosition: {
type: PropType<NoteToolPosition | ToolPositionValue>;
required: boolean;
validator: (v: any) => boolean;
};
toolDefaultLine: {
type: NumberConstructor;
required: boolean;
};
toolToggle: {
type: BooleanConstructor;
default: boolean;
};
textareaWidth: {
type: StringConstructor;
required: boolean;
};
textareaHeight: {
type: StringConstructor;
required: boolean;
};
textareaMaxWidth: {
type: StringConstructor;
required: boolean;
};
textareaMaxHeight: {
type: StringConstructor;
required: boolean;
};
textareaHeightIsModify: {
type: BooleanConstructor;
default: boolean;
};
placeholderIsVisible: {
type: BooleanConstructor;
default: boolean;
};
placeholderAddTop: {
type: NumberConstructor;
required: boolean;
};
placeholderAddLeft: {
type: NumberConstructor;
required: boolean;
};
placeholderWidth: {
type: StringConstructor;
required: boolean;
};
placeholderColor: {
type: StringConstructor;
required: boolean;
};
placeholderBackgroundColor: {
type: StringConstructor;
required: boolean;
};
placeholderTitle: {
type: StringConstructor;
required: boolean;
};
placeholderTextContent: {
type: StringConstructor;
required: boolean;
};
attFilePreventTypes: {
type: StringConstructor;
required: boolean;
};
attFileAcceptTypes: {
type: StringConstructor;
required: boolean;
};
attFileMaxSize: {
type: NumberConstructor;
required: boolean;
default: number;
};
attImagePreventTypes: {
type: StringConstructor;
required: boolean;
};
attImageAcceptTypes: {
type: StringConstructor;
required: boolean;
};
attImageMaxSize: {
type: NumberConstructor;
required: boolean;
default: number;
};
defaultFontSize: {
type: NumberConstructor;
required: boolean;
};
defaultLineHeight: {
type: NumberConstructor;
required: boolean;
};
defaultFontFamily: {
type: StringConstructor;
required: boolean;
};
defaultToolFontFamily: {
type: StringConstructor;
required: boolean;
};
addFontFamily: {
type: StringConstructor;
required: boolean;
};
removeFontFamily: {
type: StringConstructor;
required: boolean;
};
language: {
type: StringConstructor;
required: boolean;
};
recodeLimit: {
type: StringConstructor;
required: boolean;
};
sizeLevelDesktop: {
type: NumberConstructor;
required: boolean;
};
sizeLevelMobile: {
type: NumberConstructor;
required: boolean;
};
color: {
type: PropType<Color | string>;
required: boolean;
};
invertColor: {
type: BooleanConstructor;
default: boolean;
};
usingParagraphStyle: {
type: BooleanConstructor;
default: boolean;
};
usingBold: {
type: BooleanConstructor;
default: boolean;
};
usingUnderline: {
type: BooleanConstructor;
default: boolean;
};
usingItalic: {
type: BooleanConstructor;
default: boolean;
};
usingUl: {
type: BooleanConstructor;
default: boolean;
};
usingOl: {
type: BooleanConstructor;
default: boolean;
};
usingTextAlign: {
type: BooleanConstructor;
default: boolean;
};
usingAttLink: {
type: BooleanConstructor;
default: boolean;
};
usingAttFile: {
type: BooleanConstructor;
default: boolean;
};
usingAttImage: {
type: BooleanConstructor;
default: boolean;
};
usingAttVideo: {
type: BooleanConstructor;
default: boolean;
};
usingFontSize: {
type: BooleanConstructor;
default: boolean;
};
usingLetterSpacing: {
type: BooleanConstructor;
default: boolean;
};
usingLineHeight: {
type: BooleanConstructor;
default: boolean;
};
usingFontFamily: {
type: BooleanConstructor;
default: boolean;
};
usingColorText: {
type: BooleanConstructor;
default: boolean;
};
usingColorBack: {
type: BooleanConstructor;
default: boolean;
};
usingFormatClear: {
type: BooleanConstructor;
default: boolean;
};
usingUndo: {
type: BooleanConstructor;
default: boolean;
};
usingRedo: {
type: BooleanConstructor;
default: boolean;
};
usingHelp: {
type: BooleanConstructor;
default: boolean;
};
usingParagraphAllStyle: {
type: BooleanConstructor;
default: boolean;
};
usingCharacterStyle: {
type: BooleanConstructor;
default: boolean;
};
usingCharacterSize: {
type: BooleanConstructor;
default: boolean;
};
usingAttachFile: {
type: BooleanConstructor;
default: boolean;
};
usingDo: {
type: BooleanConstructor;
default: boolean;
};
required: {
type: BooleanConstructor;
default: boolean;
};
modelValue: {
type: PropType<NoteData>;
required: boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
invertColor: boolean;
required: boolean;
visible: boolean;
tabIndex: string | number | null;
editMode: "editable" | "disable" | "readonly" | EditMode;
toolToggle: boolean;
textareaHeightIsModify: boolean;
placeholderIsVisible: boolean;
attFileMaxSize: number;
attImageMaxSize: number;
usingParagraphStyle: boolean;
usingBold: boolean;
usingUnderline: boolean;
usingItalic: boolean;
usingUl: boolean;
usingOl: boolean;
usingTextAlign: boolean;
usingAttLink: boolean;
usingAttFile: boolean;
usingAttImage: boolean;
usingAttVideo: boolean;
usingFontSize: boolean;
usingLetterSpacing: boolean;
usingLineHeight: boolean;
usingFontFamily: boolean;
usingColorText: boolean;
usingColorBack: boolean;
usingFormatClear: boolean;
usingUndo: boolean;
usingRedo: boolean;
usingHelp: boolean;
usingParagraphAllStyle: boolean;
usingCharacterStyle: boolean;
usingCharacterSize: boolean;
usingAttachFile: boolean;
usingDo: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HNoteClientOnly: Component;

/**
 * Represents a single editable Vanillanote instance within the DOM.
 *
 * - Each Vanillanote editor on the page is mounted into a `VanillanoteElement`,
 *   which extends `HTMLDivElement` and adds additional internal properties and methods.
 * - All editors are dynamically generated based on a `<div data-vanillanote>` element.
 * - Editors are automatically assigned a unique `_id`, based on creation order or a custom `data-id`.
 * - Each `VanillanoteElement` manages its own selection state, styling, events, attachment data, and DOM references.
 *
 * ### Key Features:
 * - Manages internal selections, styles, file attachments, and UI states independently per editor.
 * - Provides API methods like `getNoteData()` to export editor content and `setNoteData()` to restore editor state.
 * - Supports rich text editing features including text styling, file/image/video attachment, undo/redo history, placeholders, and more.
 * - Integrates before/after event hooks to customize interaction behaviors.
 *
 * ### Internal Structure:
 * - `_selection`: Tracks selection state like current selection range, start/end nodes, and drag selections.
 * - `_attributes`: Stores editor behavior settings like device mode, language, and size constraints.
 * - `_status`: Stores current toggled states (e.g., bold active, selected color).
 * - `_elements`: References to important DOM elements (textarea, toolbar buttons, modals, etc.).
 * - `_cssEvents`: Low-level event handlers (click, touch) for custom interaction logic.
 * - `_elementEvents`: High-level hooks for specific UI elements.
 * - `_attFiles`, `_attImages`: Manage attached files/images.
 * - `_recodes`: Manage undo/redo history for editing actions.
 *
 * ### Usage Example:
 * ```ts
 * const note = Vanillanote.getNote('my-editor-id');
 * const data = note.getNoteData();
 *
 * console.log(data.html); // Editor HTML content
 * editor.setNoteData(data); // Restore content
 * ```
 *
 * @remarks
 * - `VanillanoteElement` is automatically created when calling `vn.mountNote()`.
 * - It should not be manually instantiated by developers.
 * - Each `VanillanoteElement` belongs to a shared singleton `Vanillanote` object.
 * - Supports multiple editors per page.
 *
 * @see Vanillanote
 * @see getNoteData
 * @see setNoteData
 */
export declare interface HNoteElement extends ComponentMethods, VanillanoteElement {
    /**
     * Returns the type of the note.
     */
    getType(): 'note';
    /**
     * Gets whether the note is currently required.
     * - If `true`, the note will show a visual required style.
     */
    getRequired(): boolean;
    /**
     * Sets the required state of the note.
     */
    setRequired(required: boolean): void;
    /**
     * Gets the current edit mode.
     * - Possible values: `'editable'`, `'readonly'`, `'disable'`
     */
    getEditMode(): EditModeValue;
    /**
     * Sets the edit mode of the note.
     * - `'readonly'` and `'disable'` both prevent editing but differ in style.
     */
    setEditMode(mode: EditMode | EditModeValue): void;
    /**
     * Returns whether any note inside the group has been modified by user interaction.
     *
     * @returns `true` if at least one note is marked as modified.
     */
    isModified(): boolean;
    /**
     * Resets the modification status of all notes in the group.
     *
     * Typically called after saving or loading new data.
     */
    initModified(): void;
    /**
     * Gets the current `tabIndex` applied to element.
     * - `null`: no `tabindex` attribute (items not focusable).
     * - `0` or positive number: items can be focused via keyboard navigation.
     */
    getTabIndex(): number | null;
    /**
     * Sets `tabIndex` for element.
     * @param v - `null` to remove, or number to make focusable.
     */
    setTabIndex(v: number | null): void;
    /**
     * Focus on the note.
     */
    focus(): void;
    /**
     * Converts the current editor content into a `DataModel` instance.
     *
     * - Returns a new `DataModel` where each property of `NoteData` (like `html`, `links`, `files`, etc.)
     *   becomes a column, and a single row represents the editor state.
     *
     * @returns A `DataModel<NoteData>` containing the editor's current data.
     */
    getDataModel(): InterfaceDataModel<NoteData>;
    /**
     * Populates the editor using a `DataModel` instance.
     *
     * - Extracts values from the first row of the `DataModel`, if available.
     * - Uses the values from columns like `html`, `plainText`, `links`, etc. to restore editor content.
     *
     * @param dataModel A `DataModel` whose first row maps to `NoteData` structure.
     */
    setDataModel<T extends NoteData>(dataModel: InterfaceDataModel<T>): void;
    /**
     * Loads editor content from either a `NoteData` object or a compatible `DataModel`.
     *
     * - Accepts plain `NoteData`, raw object, or `DataModel`.
     * - Automatically determines how to process the input and restores the editor accordingly.
     *
     * @param data Editor content to load, in `NoteData` or `DataModel` form.
     */
    load<T extends NoteData>(data: NoteData | Record<string, any> | InterfaceDataModel<T>): void;
}

export { HourFormat }

export { HourMinuteFormat }

export declare const HPagination: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
gap: {
type: PropType<number | string>;
default: string;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
modelValue: {
type: NumberConstructor;
default: number;
};
totalItems: {
type: NumberConstructor;
required: boolean;
default: undefined;
};
pageSize: {
type: NumberConstructor;
default: number;
};
totalPages: {
type: NumberConstructor;
required: boolean;
default: undefined;
};
maxButtons: {
type: NumberConstructor;
default: number;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
showPrev: {
type: BooleanConstructor;
default: boolean;
};
showNext: {
type: BooleanConstructor;
default: boolean;
};
showFirst: {
type: BooleanConstructor;
default: boolean;
};
showLast: {
type: BooleanConstructor;
default: boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
gap: {
type: PropType<number | string>;
default: string;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
modelValue: {
type: NumberConstructor;
default: number;
};
totalItems: {
type: NumberConstructor;
required: boolean;
default: undefined;
};
pageSize: {
type: NumberConstructor;
default: number;
};
totalPages: {
type: NumberConstructor;
required: boolean;
default: undefined;
};
maxButtons: {
type: NumberConstructor;
default: number;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
showPrev: {
type: BooleanConstructor;
default: boolean;
};
showNext: {
type: BooleanConstructor;
default: boolean;
};
showFirst: {
type: BooleanConstructor;
default: boolean;
};
showLast: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onChange?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
"onFirst-click"?: ((...args: any[]) => any) | undefined;
"onFirst-mouseover"?: ((...args: any[]) => any) | undefined;
"onFirst-mouseout"?: ((...args: any[]) => any) | undefined;
"onPrev-click"?: ((...args: any[]) => any) | undefined;
"onPrev-mouseover"?: ((...args: any[]) => any) | undefined;
"onPrev-mouseout"?: ((...args: any[]) => any) | undefined;
"onNext-click"?: ((...args: any[]) => any) | undefined;
"onNext-mouseover"?: ((...args: any[]) => any) | undefined;
"onNext-mouseout"?: ((...args: any[]) => any) | undefined;
"onLast-click"?: ((...args: any[]) => any) | undefined;
"onLast-mouseover"?: ((...args: any[]) => any) | undefined;
"onLast-mouseout"?: ((...args: any[]) => any) | undefined;
"onPage-click"?: ((...args: any[]) => any) | undefined;
"onPage-mouseover"?: ((...args: any[]) => any) | undefined;
"onPage-mouseout"?: ((...args: any[]) => any) | undefined;
}> & {}>;
containerStyle: ComputedRef<any>;
responsiveClassList: Ref<string[], string[]>;
buttonClassList: ComputedRef<string[]>;
visibleClass: ComputedRef<"" | "hison-display-none">;
border: Ref<boolean, boolean>;
backgroundType: Ref<BackgroundTypeValue, BackgroundTypeValue>;
clickInterval: Ref<number, number>;
tabIndex: Ref<number | null, number | null>;
disableAll: ComputedRef<boolean>;
currentPage: Ref<number, number>;
totalPages: ComputedRef<number>;
isFirstDisabled: ComputedRef<boolean>;
isPrevDisabled: ComputedRef<boolean>;
isNextDisabled: ComputedRef<boolean>;
isLastDisabled: ComputedRef<boolean>;
pageWindow: ComputedRef<number[]>;
activeButtonClass: ComputedRef<string>;
showPrev: Ref<boolean, boolean>;
showNext: Ref<boolean, boolean>;
showFirst: Ref<boolean, boolean>;
showLast: Ref<boolean, boolean>;
emitNav: (type: "first" | "prev" | "next" | "last", evtName: "click" | "mouseover" | "mouseout", e: MouseEvent, btn: any) => void;
emitPageEvt: (evtName: "click" | "mouseover" | "mouseout", page: number, e: MouseEvent, btn: any) => void;
goPrev: () => void;
goNext: () => void;
goFirst: () => void;
goLast: () => void;
goPage: (p: number) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "change" | "responsive-change" | "update:modelValue" | "first-click" | "first-mouseover" | "first-mouseout" | "prev-click" | "prev-mouseover" | "prev-mouseout" | "next-click" | "next-mouseover" | "next-mouseout" | "last-click" | "last-mouseover" | "last-mouseout" | "page-click" | "page-mouseover" | "page-mouseout")[], "mounted" | "change" | "responsive-change" | "update:modelValue" | "first-click" | "first-mouseover" | "first-mouseout" | "prev-click" | "prev-mouseover" | "prev-mouseout" | "next-click" | "next-mouseover" | "next-mouseout" | "last-click" | "last-mouseover" | "last-mouseout" | "page-click" | "page-mouseover" | "page-mouseout", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
gap: {
type: PropType<number | string>;
default: string;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
modelValue: {
type: NumberConstructor;
default: number;
};
totalItems: {
type: NumberConstructor;
required: boolean;
default: undefined;
};
pageSize: {
type: NumberConstructor;
default: number;
};
totalPages: {
type: NumberConstructor;
required: boolean;
default: undefined;
};
maxButtons: {
type: NumberConstructor;
default: number;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
showPrev: {
type: BooleanConstructor;
default: boolean;
};
showNext: {
type: BooleanConstructor;
default: boolean;
};
showFirst: {
type: BooleanConstructor;
default: boolean;
};
showLast: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onChange?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
"onFirst-click"?: ((...args: any[]) => any) | undefined;
"onFirst-mouseover"?: ((...args: any[]) => any) | undefined;
"onFirst-mouseout"?: ((...args: any[]) => any) | undefined;
"onPrev-click"?: ((...args: any[]) => any) | undefined;
"onPrev-mouseover"?: ((...args: any[]) => any) | undefined;
"onPrev-mouseout"?: ((...args: any[]) => any) | undefined;
"onNext-click"?: ((...args: any[]) => any) | undefined;
"onNext-mouseover"?: ((...args: any[]) => any) | undefined;
"onNext-mouseout"?: ((...args: any[]) => any) | undefined;
"onLast-click"?: ((...args: any[]) => any) | undefined;
"onLast-mouseover"?: ((...args: any[]) => any) | undefined;
"onLast-mouseout"?: ((...args: any[]) => any) | undefined;
"onPage-click"?: ((...args: any[]) => any) | undefined;
"onPage-mouseover"?: ((...args: any[]) => any) | undefined;
"onPage-mouseout"?: ((...args: any[]) => any) | undefined;
}>, {
disable: boolean;
gap: string | number;
border: boolean;
visible: boolean;
tabIndex: string | number | null;
backgroundType: BackgroundTypeValue | BackgroundType;
clickInterval: number;
modelValue: number;
totalItems: number;
pageSize: number;
totalPages: number;
maxButtons: number;
showPrev: boolean;
showNext: boolean;
showFirst: boolean;
showLast: boolean;
}, {}, {
HButton: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>, {
buttonRef: Ref<HTMLButtonElement | null, HTMLButtonElement | null>;
buttonMethods: ComputedRef<HButtonMethods | {
getType: () => "button";
getText: () => string;
getTitle: () => string;
isDisable: () => boolean;
setText: (text: string) => void;
setTitle: (title: string) => void;
setDisable: (disable: boolean) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (type: BackgroundType | BackgroundTypeValue) => void;
unlock: () => void;
getClickInterval: () => number;
setClickInterval: (ms: number) => void;
getTabIndex: () => number | null;
setTabIndex: (v: number | null) => void;
focus: () => void;
isHisonvueComponent: true;
getId: () => string;
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
visibleClass: ComputedRef<"" | "hison-display-none">;
disable: Ref<boolean, boolean>;
disableClass: ComputedRef<"" | "hison-disable">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
title: Ref<string, string>;
responsiveClassList: Ref<string[], string[]>;
hasLabelSlot: ComputedRef<boolean>;
computedAriaLabel: ComputedRef<string | undefined>;
internalText: Ref<string, string>;
tabIndex: Ref<number | null, number | null>;
onClick: (e: MouseEvent) => Promise<void>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change")[], "click" | "mounted" | "mousedown" | "mouseout" | "mouseover" | "mouseup" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
disable: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
clickInterval: {
type: NumberConstructor;
default: number;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
tabIndex: {
type: PropType<number | string | null>;
default: null;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClick?: ((...args: any[]) => any) | undefined;
onMousedown?: ((...args: any[]) => any) | undefined;
onMouseout?: ((...args: any[]) => any) | undefined;
onMouseover?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
disable: boolean;
border: boolean;
visible: boolean;
tabIndex: string | number | null;
backgroundType: BackgroundTypeValue | BackgroundType;
clickInterval: number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HPaginationClientOnly: Component;

/**
 * Runtime control methods for `HPagination` component.
 *
 * This interface defines methods that can be accessed via `hison.component.getPagination(id)`.
 * Use these methods to manipulate pagination state programmatically at runtime.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const pg = hison.component.getPagination('pg1');
 * pg.setCurrentPage(3);       // Jump to page 3
 * pg.goNext();                // Move to the next page
 * pg.setShowFirst(false);     // Hide the "First" button
 * pg.setGap('1rem');          // Change spacing between buttons
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - `modelValue` (v-model) is automatically updated when using `setCurrentPage` or navigation methods.
 * - All changes are reactive and immediately reflected in the DOM.
 * - If `totalPages` is explicitly set via props, it overrides `totalItems/pageSize` calculation.
 */
export declare interface HPaginationMethods extends ComponentMethods {
    /**
     * Returns the component type identifier.
     * - Always `'pagination'`
     */
    getType(): 'pagination';
    /**
     * Returns whether the pagination component is currently visible.
     */
    isVisible(): boolean;
    /**
     * Sets the visibility of the entire pagination component.
     * @param v - `true` to show, `false` to hide
     */
    setVisible(v: boolean): void;
    /**
     * Returns the current spacing (gap) between buttons.
     * - Value is normalized into a CSS unit string (e.g., `"8px"`, `"0.5rem"`).
     */
    getGap(): string;
    /**
     * Sets the spacing (gap) between buttons.
     * @param v - Number (treated as px) or CSS size string
     */
    setGap(v: number | string): void;
    /**
     * Gets the current active page number (1-based).
     */
    getCurrentPage(): number;
    /**
     * Sets the current active page number.
     * - Automatically clamps to `[1 .. totalPages]`.
     * - Emits both `update:modelValue` and `change` events if page changes.
     */
    setCurrentPage(page: number): void;
    /**
     * Returns the total number of pages.
     * - Computed from `totalItems/pageSize` unless `totalPages` prop is explicitly set.
     */
    getTotalPages(): number;
    /**
     * Sets the total number of pages.
     * - If current page is out of range, it will be clamped.
     */
    setTotalPages(totalPages: number): void;
    /**
     * Returns the total number of items (from `totalItems` prop).
     */
    getTotalItems(): number;
    /**
     * Returns the page size (from `pageSize` prop).
     */
    getPageSize(): number;
    /**
     * Moves to the previous page (if not on the first).
     */
    goPrev(): void;
    /**
     * Moves to the next page (if not on the last).
     */
    goNext(): void;
    /**
     * Moves to the first page.
     */
    goFirst(): void;
    /**
     * Moves to the last page.
     */
    goLast(): void;
    /**
     * Returns whether the "Prev" button is currently visible.
     */
    isShowPrev(): boolean;
    /**
     * Shows or hides the "Prev" button.
     */
    setShowPrev(v: boolean): void;
    /**
     * Returns whether the "Next" button is currently visible.
     */
    isShowNext(): boolean;
    /**
     * Shows or hides the "Next" button.
     */
    setShowNext(v: boolean): void;
    /**
     * Returns whether the "First" button is currently visible.
     */
    isShowFirst(): boolean;
    /**
     * Shows or hides the "First" button.
     */
    setShowFirst(v: boolean): void;
    /**
     * Returns whether the "Last" button is currently visible.
     */
    isShowLast(): boolean;
    /**
     * Shows or hides the "Last" button.
     */
    setShowLast(v: boolean): void;
    /**
     * Returns whether buttons currently display a border.
     */
    isBorder(): boolean;
    /**
     * Sets whether buttons display a border.
     * @param border - `true` to show, `false` to hide
     */
    setBorder(border: boolean): void;
    /**
     * Gets the current background type of the buttons.
     * - 'filled' | 'empty' | 'transparent'
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type of the buttons.
     * @param type - New background type to apply
     */
    setBackgroundType(type: BackgroundType | BackgroundTypeValue): void;
    /**
     * Returns the current click interval (in ms) applied to navigation buttons.
     */
    getClickInterval(): number;
    /**
     * Sets the minimum interval (in ms) between button clicks.
     */
    setClickInterval(ms: number): void;
    /**
     * Gets the current `tabIndex` for pagination buttons.
     * - `null`: no `tabindex` (not focusable)
     * - `0` or positive: focusable in tab order
     */
    getTabIndex(): number | null;
    /**
     * Sets the `tabIndex` for pagination buttons.
     * @param v - `null` to remove, or number to set
     */
    setTabIndex(v: number | null): void;
    /**
     * Focuses on the most relevant pagination button.
     * - Priority: current page → prev → next → first → last
     */
    focus(): void;
    /**
     * Forces a full reload of the pagination component.
     * - Useful if props or slots have changed dynamically.
     */
    reload(): void;
}

export declare const HParagraph: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
verticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
whiteSpace: {
type: PropType<WhiteSpace | WhiteSpaceValue | null>;
default: null;
validator: (v: any) => boolean;
};
copyEnabled: {
type: BooleanConstructor;
default: boolean;
};
showCopyButton: {
type: BooleanConstructor;
default: boolean;
};
copyButtonText: {
type: StringConstructor;
default: string;
};
translate: {
type: BooleanConstructor;
default: boolean;
};
}>, {
paraRef: Ref<HTMLElement | null, HTMLElement | null>;
paragraphMethods: ComputedRef<HParagraphMethods | {
getType: () => "paragraph";
isVisible: () => boolean;
setVisible: (visible: boolean) => void;
getTitle: () => string;
setTitle: (title: string) => void;
getText: () => string;
setText: (text: string) => void;
getTextAlign: () => TextAlignValue;
setTextAlign: (textAlign: TextAlign | TextAlignValue) => void;
getVerticalAlign: () => "top" | "middle" | "bottom";
setVerticalAlign: (align: "top" | "middle" | "bottom") => void;
isFontBold: () => boolean;
setFontBold: (bold: boolean) => void;
isFontItalic: () => boolean;
setFontItalic: (italic: boolean) => void;
isFontThruline: () => boolean;
setFontThruline: (thruline: boolean) => void;
isFontUnderline: () => boolean;
setFontUnderline: (underline: boolean) => void;
isBorder: () => boolean;
setBorder: (border: boolean) => void;
getBackgroundType: () => BackgroundTypeValue;
setBackgroundType: (type: BackgroundType | BackgroundTypeValue) => void;
getWhiteSpace: () => "normal" | "pre" | "pre-wrap" | "pre-line" | "break-spaces" | null;
setWhiteSpace: (ws: "normal" | "pre" | "pre-wrap" | "pre-line" | "break-spaces" | null) => void;
getCopyButtonText: () => string;
setCopyButtonText: (buttonText: string) => void;
isCopyEnabled: () => boolean;
setCopyEnabled: (copyEnabled: boolean) => void;
isShowCopyButton: () => boolean;
setShowCopyButton: (v: boolean) => void;
copy: () => Promise<boolean>;
isTranslate: () => boolean;
setTranslate: (translate: boolean) => void;
isHisonvueComponent: true;
getId: () => string;
reload: () => void;
} | null>;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
verticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
whiteSpace: {
type: PropType<WhiteSpace | WhiteSpaceValue | null>;
default: null;
validator: (v: any) => boolean;
};
copyEnabled: {
type: BooleanConstructor;
default: boolean;
};
showCopyButton: {
type: BooleanConstructor;
default: boolean;
};
copyButtonText: {
type: StringConstructor;
default: string;
};
translate: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onCopy-click"?: ((...args: any[]) => any) | undefined;
onCopied?: ((...args: any[]) => any) | undefined;
"onCopy-error"?: ((...args: any[]) => any) | undefined;
}> & {}>;
id: string;
copyButtonId: ComputedRef<string>;
title: Ref<string, string>;
visibleClass: ComputedRef<"" | "hison-display-none">;
borderClass: ComputedRef<"" | "hison-border">;
backgroundType: Ref<BackgroundTypeValue | BackgroundType, BackgroundTypeValue | BackgroundType>;
backgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
fontBoldClass: ComputedRef<"" | "hison-font-bold">;
fontItalicClass: ComputedRef<"" | "hison-font-italic">;
fontThrulineClass: ComputedRef<"" | "hison-font-thruline">;
fontUnderlineClass: ComputedRef<"" | "hison-font-underline">;
responsiveClassList: Ref<string[], string[]>;
buttonClassList: ComputedRef<string[]>;
internalText: Ref<string, string>;
copyButtonText: Ref<string, string>;
copyEnabled: Ref<boolean, boolean>;
showCopyButton: Ref<boolean, boolean>;
hasElementSlot: ComputedRef<boolean>;
hasAnySlot: ComputedRef<boolean>;
whiteSpaceClass: ComputedRef<"" | "hison-ws-normal" | "hison-ws-pre" | "hison-ws-pre-wrap" | "hison-ws-pre-line" | "hison-ws-break-spaces">;
textAlignClass: ComputedRef<"hison-ta-center" | "hison-ta-right" | "hison-ta-left">;
verticalAlignClass: ComputedRef<"" | "hison-valign-middle" | "hison-valign-bottom">;
copyGuardClass: ComputedRef<"" | "hison-no-select">;
translateClass: ComputedRef<"" | "notranslate">;
translateAttr: ComputedRef<"no" | undefined>;
onKeydown: (e: KeyboardEvent) => Promise<void>;
onCopyEvent: (e: ClipboardEvent) => Promise<void>;
onCutEvent: (e: ClipboardEvent) => void;
onSelectStart: (e: Event) => void;
onCopyButtonClick: (e: MouseEvent) => Promise<void>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change" | "copy-click" | "copied" | "copy-error")[], "mounted" | "responsive-change" | "copy-click" | "copied" | "copy-error", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
title: {
type: StringConstructor;
required: boolean;
};
text: {
type: StringConstructor;
required: boolean;
};
fontBold: {
type: BooleanConstructor;
default: boolean;
};
fontItalic: {
type: BooleanConstructor;
default: boolean;
};
fontThruline: {
type: BooleanConstructor;
default: boolean;
};
fontUnderline: {
type: BooleanConstructor;
default: boolean;
};
textAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: null;
validator: (v: any) => boolean;
};
verticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
whiteSpace: {
type: PropType<WhiteSpace | WhiteSpaceValue | null>;
default: null;
validator: (v: any) => boolean;
};
copyEnabled: {
type: BooleanConstructor;
default: boolean;
};
showCopyButton: {
type: BooleanConstructor;
default: boolean;
};
copyButtonText: {
type: StringConstructor;
default: string;
};
translate: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
"onCopy-click"?: ((...args: any[]) => any) | undefined;
onCopied?: ((...args: any[]) => any) | undefined;
"onCopy-error"?: ((...args: any[]) => any) | undefined;
}>, {
verticalAlign: "top" | "bottom" | "middle" | VerticalAlign;
whiteSpace: "normal" | "pre" | "pre-wrap" | "pre-line" | "break-spaces" | WhiteSpace | null;
border: boolean;
textAlign: "left" | "center" | "right" | TextAlign;
translate: boolean;
fontBold: boolean;
fontItalic: boolean;
fontThruline: boolean;
fontUnderline: boolean;
visible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
copyEnabled: boolean;
showCopyButton: boolean;
copyButtonText: string;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HParagraphClientOnly: Component;

/**
 * Runtime control methods for `HParagraph` component.
 *
 * This interface exposes programmatic access to a paragraph’s visibility, text,
 * typography toggles, alignment, background/border, whitespace policy, and the
 * built-in copy behavior. You can retrieve an instance via
 * `hison.component.getParagraph(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const p = hison.component.getParagraph('p1');
 * p.setText('Line 1\n  Line 2\nLine 3');
 * p.setWhiteSpace('pre-wrap');         // preserve newlines + sequences of spaces
 * p.setFontBold(true);
 * p.setTextAlign('right');
 * p.setCopyEnabled(true);
 * p.setShowCopyButton(true);
 * await p.copy();                      // copy rendered text to clipboard
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - All methods are reactive and immediately affect the DOM.
 * - `getText()`/`setText()` control the internal text **only when there is no
 *   element content in the default slot**. If the default slot contains any
 *   elements, `getText()` returns `''` and `setText()` is a no-op.
 * - `setWhiteSpace(null)` uses the component default (currently `'pre-wrap'`).
 * - `copy()` copies the **rendered** text (mirrors what a user would select),
 *   respecting the current whitespace policy.
 */
export declare interface HParagraphMethods extends ComponentMethods {
    /**
     * Returns the component type identifier.
     */
    getType(): 'paragraph';
    /**
     * Returns whether the paragraph is currently visible.
     */
    isVisible(): boolean;
    /**
     * Shows or hides the paragraph.
     */
    setVisible(visible: boolean): void;
    /**
     * Gets the current tooltip text (`title` attribute).
     */
    getTitle(): string;
    /**
     * Sets the tooltip text (`title` attribute).
     */
    setTitle(title: string): void;
    /**
     * Gets the internal text value.
     * - Returns `''` when the default slot contains elements (non-text).
     */
    getText(): string;
    /**
     * Sets the internal text value.
     * - Ignored when the default slot contains elements (non-text).
     */
    setText(text: string): void;
    /**
     * Gets the horizontal text alignment.
     * - One of `'left' | 'center' | 'right'`.
     */
    getTextAlign(): TextAlignValue;
    /**
     * Sets the horizontal text alignment.
     * - Accepts enum `TextAlign` or a string literal.
     */
    setTextAlign(textAlign: TextAlign | TextAlignValue): void;
    /**
     * Gets the vertical alignment mode.
     * - One of `'top' | 'middle' | 'bottom'` (applies when container has height).
     */
    getVerticalAlign(): 'top' | 'middle' | 'bottom';
    /**
     * Sets the vertical alignment mode.
     */
    setVerticalAlign(align: 'top' | 'middle' | 'bottom'): void;
    /**
     * Returns whether bold style is enabled.
     */
    isFontBold(): boolean;
    /**
     * Toggles bold style.
     */
    setFontBold(bold: boolean): void;
    /**
     * Returns whether italic style is enabled.
     */
    isFontItalic(): boolean;
    /**
     * Toggles italic style.
     */
    setFontItalic(italic: boolean): void;
    /**
     * Returns whether strikethrough is enabled.
     */
    isFontThruline(): boolean;
    /**
     * Toggles strikethrough.
     */
    setFontThruline(thruline: boolean): void;
    /**
     * Returns whether underline is enabled.
     */
    isFontUnderline(): boolean;
    /**
     * Toggles underline.
     */
    setFontUnderline(underline: boolean): void;
    /**
     * Returns whether the border (subtle box shadow) is shown.
     */
    isBorder(): boolean;
    /**
     * Shows or hides the border (subtle box shadow).
     */
    setBorder(border: boolean): void;
    /**
     * Gets the current background type.
     * - `'filled' | 'empty' | 'transparent'`
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type.
     */
    setBackgroundType(type: BackgroundType | BackgroundTypeValue): void;
    /**
     * Gets the current CSS `white-space` policy, or `null` for component default.
     * - `'normal' | 'pre' | 'pre-wrap' | 'pre-line' | 'break-spaces' | null`
     */
    getWhiteSpace(): 'normal' | 'pre' | 'pre-wrap' | 'pre-line' | 'break-spaces' | null;
    /**
     * Sets the CSS `white-space` policy.
     * - Pass `null` to use the component default (currently `'pre-wrap'`).
     */
    setWhiteSpace(ws: 'normal' | 'pre' | 'pre-wrap' | 'pre-line' | 'break-spaces' | null): void;
    /**
     * Gets the text shown on the built-in copy button.
     */
    getCopyButtonText(): string;
    /**
     * Sets the text shown on the built-in copy button.
     */
    setCopyButtonText(buttonText: string): void;
    /**
     * Returns whether copy actions are enabled (Ctrl/Cmd+C and copy button).
     */
    isCopyEnabled(): boolean;
    /**
     * Enables or disables copy actions.
     */
    setCopyEnabled(copyEnabled: boolean): void;
    /**
     * Returns whether the built-in copy button is visible.
     */
    isShowCopyButton(): boolean;
    /**
     * Shows or hides the built-in copy button.
     */
    setShowCopyButton(v: boolean): void;
    /**
     * Copies the rendered text content to the clipboard.
     * - Resolves to `true` on success, `false` if copying is blocked or fails.
     */
    copy(): Promise<boolean>;
    /**
     * Returns whether translation is currently enabled.
     * - When `false`, the paragraph has `translate="no"` and `.notranslate` class.
     */
    isTranslate(): boolean;
    /**
     * Enables or disables browser translation prevention.
     * - `true` → nothing
     * - `false` → adds `translate="no"` + `.notranslate`
     */
    setTranslate(translate: boolean): void;
}

export declare const HPopup: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
left: {
type: PropType<number | null>;
default: null;
};
top: {
type: PropType<number | null>;
default: null;
};
width: {
type: PropType<number | null>;
default: null;
};
height: {
type: PropType<number | null>;
default: null;
};
draggable: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
left: {
type: PropType<number | null>;
default: null;
};
top: {
type: PropType<number | null>;
default: null;
};
width: {
type: PropType<number | null>;
default: null;
};
height: {
type: PropType<number | null>;
default: null;
};
draggable: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}> & {}>;
popupRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
popupWrapperRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
visibleClass: ComputedRef<"" | "hison-display-none">;
responsiveClassList: Ref<string[], string[]>;
childClassList: ComputedRef<string[]>;
borderClass: ComputedRef<"hison-border" | "hison-border-none">;
wrapperStyle: ComputedRef<Record<string, string | number>>;
overlayStyleWithZ: ComputedRef<any>;
isOverlayVisible: ComputedRef<boolean>;
sizeStyle: ComputedRef<Record<string, string>>;
closeButtonVisible: Ref<boolean, boolean>;
closeButtonBackgroundType: ComputedRef<"filled" | "empty">;
closeButtonText: string;
closeButtonTitle: string;
draggable: Ref<boolean, boolean>;
onClickCloseButton: () => void;
onOverlayClick: () => void;
onTopbarPointerDown: (e: PointerEvent) => void;
popupMethods: ComputedRef<HPopupMethods | {
getType: () => "popup";
isVisible: () => boolean;
open: () => void | Promise<void>;
close: () => void | Promise<void>;
toggle: () => void | Promise<void>;
setVisible: (v: boolean) => void | Promise<void>;
getZIndex: () => number;
setZIndex: (v: number) => void;
getPosition: () => ScreenPositionValue;
setPosition: (v: ScreenPosition | ScreenPositionValue) => void;
getLeft: () => number | null;
setLeft: (v: number | null) => void;
getTop: () => number | null;
setTop: (v: number | null) => void;
getWidth: () => number | null;
setWidth: (v: number | null) => void;
getHeight: () => number | null;
setHeight: (v: number | null) => void;
isDraggable: () => boolean;
setDraggable: (v: boolean) => void;
isOverlayShown: () => boolean;
setOverlayShown: (v: boolean) => void;
isCloseClickOverlay: () => boolean;
setCloseClickOverlay: (v: boolean) => void;
isScrollLocked: () => boolean;
setScrollLock: (v: boolean) => void;
isBorder: () => boolean;
setBorder: (v: boolean) => void;
getAnimationClasses: () => {
enter: string;
leave: string;
};
setAnimationClasses: (opt: Partial<{
enter: string;
leave: string;
}>) => void;
isHisonvueComponent: true;
getId: () => string;
reload: () => void;
} | null>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "close" | "responsive-change" | "open")[], "mounted" | "close" | "responsive-change" | "open", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
border: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
left: {
type: PropType<number | null>;
default: null;
};
top: {
type: PropType<number | null>;
default: null;
};
width: {
type: PropType<number | null>;
default: null;
};
height: {
type: PropType<number | null>;
default: null;
};
draggable: {
type: BooleanConstructor;
default: boolean;
};
showOverlay: {
type: BooleanConstructor;
default: boolean;
};
closeClickOverlay: {
type: BooleanConstructor;
default: boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
scrollLock: {
type: BooleanConstructor;
default: boolean;
};
enterAnimationClass: {
type: StringConstructor;
required: boolean;
};
leaveAnimationClass: {
type: StringConstructor;
required: boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}>, {
left: number | null;
top: number | null;
width: number | null;
height: number | null;
border: boolean;
position: ScreenPositionValue | ScreenPosition;
zIndex: number;
visible: boolean;
draggable: boolean;
showOverlay: boolean;
closeClickOverlay: boolean;
scrollLock: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HPopupClientOnly: Component;

/**
 * Runtime control methods for `HPopup` component.
 *
 * This interface defines programmatic access to a popup’s visibility,
 * positioning, size, draggability, overlay, scroll lock, border, and animation settings.
 * You can retrieve an instance using `hison.component.getPopup(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const popup = hison.component.getPopup('popup01');
 * popup.open();
 * popup.setDraggable(false);
 * popup.setPopupPosition('top-right');
 * popup.setZIndex(1300);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - Visibility (`visible`) is **only** controlled by these methods. The `visible` prop is an initial state.
 * - `scrollLock` is reference-counted across multiple popups; closing one does not unlock if others are still open.
 * - `zIndex` applies to the wrapper; the overlay is always rendered at `zIndex - 1`.
 * - Dragging is enabled/disabled via `isDraggable` / `setDraggable`.
 */
export declare interface HPopupMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * Always `'popup'`.
     */
    getType(): 'popup';
    /**
     * Returns whether the popup is currently visible.
     */
    isVisible(): boolean;
    /**
     * Opens the popup (with animation and scroll lock).
     */
    open(): void | Promise<void>;
    /**
     * Closes the popup (with animation and scroll unlock).
     */
    close(): void | Promise<void>;
    /**
     * Toggles popup open/close state.
     */
    toggle(): void | Promise<void>;
    /**
     * Sets popup visibility.
     * @param v `true` → open, `false` → close
     */
    setVisible(v: boolean): void | Promise<void>;
    /**
     * Gets the current z-index of the popup wrapper.
     */
    getZIndex(): number;
    /**
     * Sets the z-index of the popup wrapper (overlay will use `zIndex - 1`).
     */
    setZIndex(v: number): void;
    /**
     * Gets the current fixed screen position of the popup wrapper.
     */
    getPosition(): ScreenPositionValue;
    /**
     * Sets the popup wrapper position on screen.
     * Accepts any `ScreenPosition` value (e.g. `'top-left'`, `'middle-center'`).
     */
    setPosition(v: ScreenPosition | ScreenPositionValue): void;
    /**
     * Gets the current absolute left (X) position in pixels.
     * Returns `null` if not in absolute mode.
     */
    getLeft(): number | null;
    /**
     * Sets the absolute left (X) position in pixels.
     * Setting this switches the popup into absolute mode.
     */
    setLeft(v: number | null): void;
    /**
     * Gets the current absolute top (Y) position in pixels.
     * Returns `null` if not in absolute mode.
     */
    getTop(): number | null;
    /**
     * Sets the absolute top (Y) position in pixels.
     * Setting this switches the popup into absolute mode.
     */
    setTop(v: number | null): void;
    /**
     * Gets the current width of the popup in pixels.
     * Returns `null` if not explicitly set.
     */
    getWidth(): number | null;
    /**
     * Sets the width of the popup in pixels.
     */
    setWidth(v: number | null): void;
    /**
     * Gets the current height of the popup in pixels.
     * Returns `null` if not explicitly set.
     */
    getHeight(): number | null;
    /**
     * Sets the height of the popup in pixels.
     */
    setHeight(v: number | null): void;
    /**
     * Returns whether dragging by the topbar is enabled.
     */
    isDraggable(): boolean;
    /**
     * Enables or disables dragging by the topbar.
     * @param v `true` → allow dragging, `false` → disable dragging
     */
    setDraggable(v: boolean): void;
    /**
     * Returns whether the overlay (backdrop) is shown.
     */
    isOverlayShown(): boolean;
    /**
     * Sets whether the overlay (backdrop) is shown.
     */
    setOverlayShown(v: boolean): void;
    /**
     * Returns whether clicking the overlay closes the popup.
     */
    isCloseClickOverlay(): boolean;
    /**
     * Sets whether clicking the overlay closes the popup.
     */
    setCloseClickOverlay(v: boolean): void;
    /**
     * Returns whether scroll lock is enabled for this popup.
     */
    isScrollLocked(): boolean;
    /**
     * Enables or disables scroll lock.
     * If enabled while visible, locks immediately.
     * If disabled while visible, unlocks immediately.
     */
    setScrollLock(v: boolean): void;
    /**
     * Returns whether the popup has border styling.
     */
    isBorder(): boolean;
    /**
     * Sets whether the popup shows border styling.
     */
    setBorder(v: boolean): void;
    /**
     * Gets the CSS class names for enter/leave animations.
     */
    getAnimationClasses(): {
        enter: string;
        leave: string;
    };
    /**
     * Sets one or both CSS animation classes for popup enter/leave.
     * Example: `{ enter: 'fade-in', leave: 'fade-out' }`
     */
    setAnimationClasses(opt: Partial<{
        enter: string;
        leave: string;
    }>): void;
}

export declare const HSpinner: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
timeoutMs: {
type: NumberConstructor;
default: number;
};
spinnerType: {
type: PropType<SpinnerType | SpinnerTypeValue>;
default: string;
validator: (v: any) => boolean;
};
}>, {
id: string;
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
timeoutMs: {
type: NumberConstructor;
default: number;
};
spinnerType: {
type: PropType<SpinnerType | SpinnerTypeValue>;
default: string;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onToggle?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}> & {}>;
wrapperRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
spinnerRef: Ref<HTMLDivElement | null, HTMLDivElement | null>;
visible: Ref<boolean, boolean>;
visibleClass: ComputedRef<"" | "hison-display-none">;
responsiveClassList: Ref<string[], string[]>;
overlayStyleWithZ: ComputedRef<any>;
wrapperStyle: ComputedRef<Record<string, string | number>>;
spinnerType: Ref<SpinnerTypeValue | SpinnerType, SpinnerTypeValue | SpinnerType>;
spinnerTypeClass: ComputedRef<string>;
spinnerMethods: ComputedRef<HSpinnerMethods | {
getType: () => "spinner";
isVisible: () => boolean;
open: () => void | Promise<void>;
close: () => void | Promise<void>;
toggle: () => void | Promise<void>;
setVisible: (v: boolean) => void | Promise<void>;
getZIndex: () => number;
setZIndex: (v: number) => void;
getPosition: () => ScreenPositionValue;
setPosition: (v: ScreenPosition | ScreenPositionValue) => void;
getTimeout: () => number;
setTimeout: (ms: number) => void;
getSpinnerType: () => SpinnerTypeValue;
setSpinnerType: (t: SpinnerType | SpinnerTypeValue) => void;
getOverlayStyle: () => any;
setOverlayStyle: (s: any) => void;
reload: () => void;
isHisonvueComponent: true;
getId: () => string;
} | null>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "close" | "toggle" | "responsive-change" | "open")[], "mounted" | "close" | "toggle" | "responsive-change" | "open", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
zIndex: {
type: NumberConstructor;
default: number;
};
position: {
type: PropType<ScreenPosition | ScreenPositionValue>;
default: ScreenPosition;
validator: (v: any) => boolean;
};
overlayStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
timeoutMs: {
type: NumberConstructor;
default: number;
};
spinnerType: {
type: PropType<SpinnerType | SpinnerTypeValue>;
default: string;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onClose?: ((...args: any[]) => any) | undefined;
onToggle?: ((...args: any[]) => any) | undefined;
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
onOpen?: ((...args: any[]) => any) | undefined;
}>, {
position: ScreenPositionValue | ScreenPosition;
zIndex: number;
visible: boolean;
timeoutMs: number;
spinnerType: SpinnerTypeValue | SpinnerType;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HSpinnerClientOnly: Component;

/**
 * Runtime control methods for `HSpinner` component.
 *
 * This interface defines programmatic access to a spinner’s visibility,
 * position, z-index, timeout auto-hide, spinner type, and overlay style.
 * You can retrieve an instance using `hison.component.getSpinner(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const spinner = hison.component.getSpinner('spinner01');
 * spinner.open();
 * spinner.setSpinnerType('dots');
 * spinner.setPosition('bottom-right');
 * spinner.setTimeout(5000);
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - Visibility (`visible`) is **only** controlled by these methods. The `visible` prop is an initial state.
 * - Overlay and scroll lock are always enforced while the spinner is open (cannot be disabled).
 * - `zIndex` applies to the wrapper; the overlay is always rendered at `zIndex - 1`.
 * - When a custom `#spinner` slot is provided, `spinnerType` is ignored.
 */
export declare interface HSpinnerMethods extends ComponentMethods {
    /**
     * Returns the type of the component.
     * Always `'spinner'`.
     */
    getType(): 'spinner';
    /**
     * Returns whether the spinner is currently visible.
     */
    isVisible(): boolean;
    /**
     * Opens the spinner (with enforced overlay and scroll lock).
     */
    open(): void | Promise<void>;
    /**
     * Closes the spinner (removes overlay and releases scroll lock).
     */
    close(): void | Promise<void>;
    /**
     * Toggles spinner open/close state.
     */
    toggle(): void | Promise<void>;
    /**
     * Sets spinner visibility.
     * @param v `true` → open, `false` → close
     */
    setVisible(v: boolean): void | Promise<void>;
    /**
     * Gets the current z-index of the spinner wrapper.
     */
    getZIndex(): number;
    /**
     * Sets the z-index of the spinner wrapper (overlay will use `zIndex - 1`).
     */
    setZIndex(v: number): void;
    /**
     * Gets the current fixed screen position of the spinner wrapper.
     */
    getPosition(): ScreenPositionValue;
    /**
     * Sets the spinner wrapper position on screen.
     * Accepts any `ScreenPosition` value (e.g. `'top-left'`, `'middle-center'`).
     */
    setPosition(v: ScreenPosition | ScreenPositionValue): void;
    /**
     * Gets the current timeout in milliseconds.
     * `0` means no auto-hide.
     */
    getTimeout(): number;
    /**
     * Sets the auto-hide timeout in milliseconds.
     * `0` disables timeout (spinner stays open until closed programmatically).
     */
    setTimeout(ms: number): void;
    /**
     * Gets the current built-in spinner type.
     * One of `'ring' | 'dots' | 'bars' | 'pulse'`.
     */
    getSpinnerType(): SpinnerTypeValue;
    /**
     * Sets the spinner type.
     * One of `'ring' | 'dots' | 'bars' | 'pulse'`.
     * Ignored when using a custom `#spinner` slot.
     */
    setSpinnerType(t: SpinnerType | SpinnerTypeValue): void;
    /**
     * Gets the current overlay style object/string/array.
     */
    getOverlayStyle(): any;
    /**
     * Sets the overlay style.
     * Merged with an internal `{ zIndex: (zIndex - 1) }`.
     */
    setOverlayStyle(s: any): void;
    /**
     * Reloads the spinner instance
     */
    reload(): void;
}

export declare const HTable: DefineComponent<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
headerCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
bodyCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
footerCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
headerCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
bodyCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
footerCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
caption: {
type: StringConstructor;
default: string;
};
striped: {
type: PropType<"row" | "col" | "none">;
default: string;
};
hoverable: {
type: PropType<"row" | "col" | "none">;
default: string;
};
border: {
type: BooleanConstructor;
default: boolean;
};
headerBorderTop: {
type: BooleanConstructor;
default: boolean;
};
headerBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
headerBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
headerBorderRight: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderTop: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderRight: {
type: BooleanConstructor;
default: boolean;
};
footerBorderTop: {
type: BooleanConstructor;
default: boolean;
};
footerBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
footerBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
footerBorderRight: {
type: BooleanConstructor;
default: boolean;
};
headerTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
bodyTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
footerTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
headerVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
bodyVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
footerVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
}>, {
props: LooseRequired<Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
headerCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
bodyCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
footerCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
headerCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
bodyCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
footerCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
caption: {
type: StringConstructor;
default: string;
};
striped: {
type: PropType<"row" | "col" | "none">;
default: string;
};
hoverable: {
type: PropType<"row" | "col" | "none">;
default: string;
};
border: {
type: BooleanConstructor;
default: boolean;
};
headerBorderTop: {
type: BooleanConstructor;
default: boolean;
};
headerBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
headerBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
headerBorderRight: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderTop: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderRight: {
type: BooleanConstructor;
default: boolean;
};
footerBorderTop: {
type: BooleanConstructor;
default: boolean;
};
footerBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
footerBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
footerBorderRight: {
type: BooleanConstructor;
default: boolean;
};
headerTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
bodyTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
footerTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
headerVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
bodyVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
footerVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}> & {}>;
tableRef: Ref<HTMLTableElement | null, HTMLTableElement | null>;
theadRef: Ref<HTMLTableSectionElement | null, HTMLTableSectionElement | null>;
tbodyRef: Ref<HTMLTableSectionElement | null, HTMLTableSectionElement | null>;
tfootRef: Ref<HTMLTableSectionElement | null, HTMLTableSectionElement | null>;
visibleClass: ComputedRef<"" | "hison-display-none">;
stripedClass: ComputedRef<"is-striped-row" | "is-striped-col" | null>;
hoverableClass: ComputedRef<"is-hover-row" | "is-hover-col" | null>;
caption: Ref<string, string>;
border: Ref<boolean, boolean>;
borderClass: ComputedRef<"" | "hison-border">;
tableBackgroundTypeClass: ComputedRef<"hison-bg-transparent" | "hison-bg-empty" | "hison-bg-filled">;
responsiveClassList: Ref<string[], string[]>;
headerBorderTopClass: ComputedRef<"" | "hison-header-border-top">;
bodyBorderTopClass: ComputedRef<"" | "hison-body-border-top">;
footerBorderTopClass: ComputedRef<"" | "hison-footer-border-top">;
headerBorderBottomClass: ComputedRef<"" | "hison-header-border-bottom">;
bodyBorderBottomClass: ComputedRef<"" | "hison-body-border-bottom">;
footerBorderBottomClass: ComputedRef<"" | "hison-footer-border-bottom">;
headerBorderLeftClass: ComputedRef<"" | "hison-header-border-left">;
bodyBorderLeftClass: ComputedRef<"" | "hison-body-border-left">;
footerBorderLeftClass: ComputedRef<"" | "hison-footer-border-left">;
headerBorderRightClass: ComputedRef<"" | "hison-header-border-right">;
bodyBorderRightClass: ComputedRef<"" | "hison-body-border-right">;
footerBorderRightClass: ComputedRef<"" | "hison-footer-border-right">;
headerTextAlignClass: ComputedRef<string>;
bodyTextAlignClass: ComputedRef<string>;
footerTextAlignClass: ComputedRef<string>;
headerVAlignClass: ComputedRef<string>;
bodyVAlignClass: ComputedRef<string>;
footerVAlignClass: ComputedRef<string>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("mounted" | "responsive-change")[], "mounted" | "responsive-change", PublicProps, Readonly<ExtractPropTypes<    {
id: {
type: StringConstructor;
required: boolean;
};
class: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
headerCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
bodyCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
footerCellClass: {
type: PropType<string | string[] | Record<string, boolean>>;
required: boolean;
};
style: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
headerCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
bodyCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
footerCellStyle: {
type: PropType<string | CSSProperties | CSSProperties[]>;
required: boolean;
};
visible: {
type: BooleanConstructor;
default: boolean;
};
caption: {
type: StringConstructor;
default: string;
};
striped: {
type: PropType<"row" | "col" | "none">;
default: string;
};
hoverable: {
type: PropType<"row" | "col" | "none">;
default: string;
};
border: {
type: BooleanConstructor;
default: boolean;
};
headerBorderTop: {
type: BooleanConstructor;
default: boolean;
};
headerBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
headerBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
headerBorderRight: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderTop: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
bodyBorderRight: {
type: BooleanConstructor;
default: boolean;
};
footerBorderTop: {
type: BooleanConstructor;
default: boolean;
};
footerBorderBottom: {
type: BooleanConstructor;
default: boolean;
};
footerBorderLeft: {
type: BooleanConstructor;
default: boolean;
};
footerBorderRight: {
type: BooleanConstructor;
default: boolean;
};
headerTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
bodyTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
footerTextAlign: {
type: PropType<TextAlign | TextAlignValue>;
default: TextAlign;
validator: (v: any) => boolean;
};
headerVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
bodyVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
footerVerticalAlign: {
type: PropType<VerticalAlign | VerticalAlignValue>;
default: VerticalAlign;
validator: (v: any) => boolean;
};
backgroundType: {
type: PropType<BackgroundType | BackgroundTypeValue>;
default: BackgroundType;
validator: (v: any) => boolean;
};
}>> & Readonly<{
onMounted?: ((...args: any[]) => any) | undefined;
"onResponsive-change"?: ((...args: any[]) => any) | undefined;
}>, {
caption: string;
border: boolean;
visible: boolean;
backgroundType: BackgroundTypeValue | BackgroundType;
striped: "none" | "row" | "col";
hoverable: "none" | "row" | "col";
headerBorderTop: boolean;
headerBorderBottom: boolean;
headerBorderLeft: boolean;
headerBorderRight: boolean;
bodyBorderTop: boolean;
bodyBorderBottom: boolean;
bodyBorderLeft: boolean;
bodyBorderRight: boolean;
footerBorderTop: boolean;
footerBorderBottom: boolean;
footerBorderLeft: boolean;
footerBorderRight: boolean;
headerTextAlign: "left" | "center" | "right" | TextAlign;
bodyTextAlign: "left" | "center" | "right" | TextAlign;
footerTextAlign: "left" | "center" | "right" | TextAlign;
headerVerticalAlign: "top" | "bottom" | "middle" | VerticalAlign;
bodyVerticalAlign: "top" | "bottom" | "middle" | VerticalAlign;
footerVerticalAlign: "top" | "bottom" | "middle" | VerticalAlign;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

export declare const HTableClientOnly: Component;

/**
 * Runtime control methods for `HTable` component.
 *
 * This interface exposes programmatic access to a table’s visibility, borders,
 * striping/hover modes, caption, section-level alignment (text/vertical), and
 * raw DOM section elements. You can retrieve an instance via
 * `hison.component.getTable(id)`.
 *
 * ---
 *
 * ### 🔧 Example Usage
 * ```ts
 * const t = hison.component.getTable('tbl1');
 *
 * // Visibility and borders
 * t.setVisible(true);
 * t.setBorder(true);
 * t.setHeaderBorderBottom(true);
 *
 * // Caption and background
 * t.setCaption('Monthly Report');
 * t.setBackgroundType('filled');
 *
 * // Striping and hover highlight
 * t.setStriped('row');
 * t.setHoverable('col');
 * ```
 *
 * ---
 *
 * ### ⚠️ Notes
 * - All methods are reactive and immediately affect the DOM.
 * - Border toggles are section-specific (`header`, `body`, `footer`) and apply
 *   per side (`top`, `bottom`, `left`, `right`).
 * - Text and vertical alignment are applied at the section level and affect all
 *   contained cells.
 * - `getRowElement(index)` uses **0-based indexing** and returns `null` if
 *   out of range.
 * - Use slots (`#caption`, `#thead`, default, `#tfoot`) for full markup
 *   customization; `setCaption()` only affects plain text captions.
 */
export declare interface HTableMethods extends ComponentMethods {
    /**
     * Returns the component type identifier.
     */
    getType(): 'table';
    /**
     * Returns whether the table is currently visible.
     * - `true`: rendered normally
     * - `false`: wrapper has `hison-display-none`
     */
    isVisible(): boolean;
    /**
     * Shows or hides the table.
     */
    setVisible(visible: boolean): void;
    /**
     * Returns whether the border (subtle box shadow) is shown.
     */
    isBorder(): boolean;
    /**
     * Shows or hides the border (subtle box shadow).
     */
    setBorder(v: boolean): void;
    /**
     * Returns whether the header top border is shown.
     */
    isHeaderBorderTop(): boolean;
    /**
     * Shows or hides the header top border.
     */
    setHeaderBorderTop(v: boolean): void;
    /**
     * Returns whether the header bottom border is shown.
     */
    isHeaderBorderBottom(): boolean;
    /**
     * Shows or hides the header bottom border.
     */
    setHeaderBorderBottom(v: boolean): void;
    /**
     * Returns whether the header left border is shown.
     */
    isHeaderBorderLeft(): boolean;
    /**
     * Shows or hides the header left border.
     */
    setHeaderBorderLeft(v: boolean): void;
    /**
     * Returns whether the header right border is shown.
     */
    isHeaderBorderRight(): boolean;
    /**
     * Shows or hides the header right border.
     */
    setHeaderBorderRight(v: boolean): void;
    /**
     * Returns whether the body top border is shown.
     */
    isBodyBorderTop(): boolean;
    /**
     * Shows or hides the body top border.
     */
    setBodyBorderTop(v: boolean): void;
    /**
     * Returns whether the body bottom border is shown.
     */
    isBodyBorderBottom(): boolean;
    /**
     * Shows or hides the body bottom border.
     */
    setBodyBorderBottom(v: boolean): void;
    /**
     * Returns whether the body left border is shown.
     */
    isBodyBorderLeft(): boolean;
    /**
     * Shows or hides the body left border.
     */
    setBodyBorderLeft(v: boolean): void;
    /**
     * Returns whether the body right border is shown.
     */
    isBodyBorderRight(): boolean;
    /**
     * Shows or hides the body right border.
     */
    setBodyBorderRight(v: boolean): void;
    /**
     * Returns whether the footer top border is shown.
     */
    isFooterBorderTop(): boolean;
    /**
     * Shows or hides the footer top border.
     */
    setFooterBorderTop(v: boolean): void;
    /**
     * Returns whether the footer bottom border is shown.
     */
    isFooterBorderBottom(): boolean;
    /**
     * Shows or hides the footer bottom border.
     */
    setFooterBorderBottom(v: boolean): void;
    /**
     * Returns whether the footer left border is shown.
     */
    isFooterBorderLeft(): boolean;
    /**
     * Shows or hides the footer left border.
     */
    setFooterBorderLeft(v: boolean): void;
    /**
     * Returns whether the footer right border is shown.
     */
    isFooterBorderRight(): boolean;
    /**
     * Shows or hides the footer right border.
     */
    setFooterBorderRight(v: boolean): void;
    /**
     * Gets the current striping mode.
     * - `'row' | 'col' | 'none'`
     */
    getStriped(): 'row' | 'col' | 'none';
    /**
     * Sets the striping mode.
     */
    setStriped(v: 'row' | 'col' | 'none'): void;
    /**
     * Gets the current hover highlight mode.
     * - `'row' | 'col' | 'none'`
     */
    getHoverable(): 'row' | 'col' | 'none';
    /**
     * Sets the hover highlight mode.
     */
    setHoverable(v: 'row' | 'col' | 'none'): void;
    /**
     * Gets the caption text (use `#caption` slot for custom content).
     */
    getCaption(): string;
    /**
     * Sets the caption text.
     */
    setCaption(text: string): void;
    /**
     * Gets the current background type.
     * - `'filled' | 'empty' | 'transparent'`
     */
    getBackgroundType(): BackgroundTypeValue;
    /**
     * Sets the background type.
     */
    setBackgroundType(t: BackgroundTypeValue): void;
    /**
     * Gets the horizontal text alignment for header cells.
     * - `'left' | 'center' | 'right'`
     */
    getHeaderTextAlign(): TextAlignValue;
    /**
     * Sets the horizontal text alignment for header cells.
     */
    setHeaderTextAlign(v: TextAlignValue): void;
    /**
     * Gets the horizontal text alignment for body cells.
     * - `'left' | 'center' | 'right'`
     */
    getBodyTextAlign(): TextAlignValue;
    /**
     * Sets the horizontal text alignment for body cells.
     */
    setBodyTextAlign(v: TextAlignValue): void;
    /**
     * Gets the horizontal text alignment for footer cells.
     * - `'left' | 'center' | 'right'`
     */
    getFooterTextAlign(): TextAlignValue;
    /**
     * Sets the horizontal text alignment for footer cells.
     */
    setFooterTextAlign(v: TextAlignValue): void;
    /**
     * Gets the vertical alignment for header cells.
     * - `'top' | 'middle' | 'bottom'`
     */
    getHeaderVerticalAlign(): VerticalAlignValue;
    /**
     * Sets the vertical alignment for header cells.
     */
    setHeaderVerticalAlign(v: VerticalAlignValue): void;
    /**
     * Gets the vertical alignment for body cells.
     * - `'top' | 'middle' | 'bottom'`
     */
    getBodyVerticalAlign(): VerticalAlignValue;
    /**
     * Sets the vertical alignment for body cells.
     */
    setBodyVerticalAlign(v: VerticalAlignValue): void;
    /**
     * Gets the vertical alignment for footer cells.
     * - `'top' | 'middle' | 'bottom'`
     */
    getFooterVerticalAlign(): VerticalAlignValue;
    /**
     * Sets the vertical alignment for footer cells.
     */
    setFooterVerticalAlign(v: VerticalAlignValue): void;
    /**
     * Returns the number of body rows (`tbody > tr`).
     */
    getRowCount(): number;
    /**
     * Returns the `<tr>` element at the given 0-based index, or `null` if out of range.
     */
    getRowElement(index: number): HTMLTableRowElement | null;
    /**
     * Returns the raw `<thead>` element, if present.
     */
    getHeadElement(): HTMLTableSectionElement | null;
    /**
     * Returns the raw `<tbody>` element.
     */
    getBodyElement(): HTMLTableSectionElement | null;
    /**
     * Returns the raw `<tfoot>` element, if present.
     */
    getFootElement(): HTMLTableSectionElement | null;
}

export declare const INPUT_TYPE_VALUES: readonly ["text", "mask", "number", "digit", "date", "month", "time", "email", "password", "checkbox", "range", "color", "textarea", "select", "radio"];

export declare enum InputType {
    text = "text",
    mask = "mask",
    number = "number",
    digit = "digit",
    date = "date",
    month = "month",
    time = "time",
    email = "email",
    password = "password",
    checkbox = "checkbox",
    range = "range",
    color = "color",
    textarea = "textarea",
    select = "select",
    radio = "radio"
}

export declare type InputTypeValue = typeof INPUT_TYPE_VALUES[number];

export { InterfaceApiDelete }

export { InterfaceApiDeleteUrl }

export { InterfaceApiGet }

export { InterfaceApiGetUrl }

export { InterfaceApiPatch }

export { InterfaceApiPatchUrl }

export { InterfaceApiPost }

export { InterfaceApiPostUrl }

export { InterfaceApiPut }

export { InterfaceApiPutUrl }

export { InterfaceCachingModule }

export { InterfaceDataModel }

export { InterfaceDataWrapper }

export declare const isCssColorLike: (v: string) => boolean;

export { LanguagePack }

export { LanguageSet }

export { Link }

declare interface LinkConfig {
    /**
     * The default protocol used for API communication.
     *
     * - Default value: `'http://'`
     * - Used in `ApiLink` to construct request URLs.
     */
    protocol: string;
    /**
     * The default domain for API requests.
     *
     * - Default value: `'localhost:8080'`
     * - Used in `ApiLink` when constructing full request URLs.
     */
    domain: string;
    /**
     * The default controller path for API requests.
     *
     * This value is appended to the `protocol` and `domain` when making API calls.
     *
     * - Default value: `'/hison-api-link'`
     * - Used in `ApiLink` when constructing API request URLs.
     */
    controllerPath: string;
    /**
     * The timeout duration (in milliseconds) for API requests.
     *
     * If the request does not complete within this time, it will be aborted.
     *
     * - Default value: `10000` (10 seconds)
     * - Used in `ApiLink._getFetch()` to set request timeouts.
     */
    timeout: number;
    /**
     * The default protocol used for WebSocket connections.
     *
     * - Default value: `'ws://'`
     * - Used in `ApiLink` when initializing WebSocket communication.
     */
    webSocketProtocol: string;
    /**
     * The default WebSocket endpoint for caching-related communication.
     *
     * - Default value: `'/hison-websocket-endpoint'`
     * - Used in `ApiLink` when establishing WebSocket connections.
     */
    webSocketEndPoint: string;
    /**
     * The caching limit for stored API responses.
     *
     * Determines the maximum number of cached API responses before old ones are removed.
     *
     * - Default value: `10`
     * - Used in `ApiLink._getCachingResult()` for cache management.
     */
    cachingLimit: number;
    /**
     * Hook function executed before making a `GET` request.
     *
     * This function can be used to modify request parameters or cancel the request.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param resourcePath The API resource path being requested.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforeGetRequest(resourcePath?: string, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `POST` request.
     *
     * This function allows modifying the request before it is sent.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param requestData The `DataWrapper` object containing the request data.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforePostRequest(requestData?: InterfaceDataWrapper, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `PUT` request.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param requestData The `DataWrapper` object containing the request data.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforePutRequest(requestData?: InterfaceDataWrapper, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `PATCH` request.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param requestData The `DataWrapper` object containing the request data.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforePatchRequest(requestData?: InterfaceDataWrapper, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `DELETE` request.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param requestData The `DataWrapper` object containing the request data.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforeDeleteRequest(requestData?: InterfaceDataWrapper, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed after completing a `GET` request.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterGetRequest<T = InterfaceDataWrapper>(responseData?: {
        data: T;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `POST` request.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterPostRequest<T = InterfaceDataWrapper>(responseData?: {
        data: T;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `PUT` request.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterPutRequest<T = InterfaceDataWrapper>(responseData?: {
        data: T;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `PATCH` request.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterPatchRequest<T = InterfaceDataWrapper>(responseData?: {
        data: T;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `DELETE` request.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterDeleteRequest<T = InterfaceDataWrapper>(responseData?: {
        data: T;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed before making a `GET` request to a specified URL.
     *
     * This function allows modifying request parameters or canceling the request.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param url The API endpoint being requested.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforeGetUrlRequest(url?: string, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `POST` request to a specified URL.
     *
     * This function allows modifying the request before it is sent.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param url The API endpoint being requested.
     * @param requestData The data being sent in the request.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforePostUrlRequest(url?: string, requestData?: any, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `PUT` request to a specified URL.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param url The API endpoint being requested.
     * @param requestData The data being sent in the request.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforePutUrlRequest(url?: string, requestData?: any, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `PATCH` request to a specified URL.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param url The API endpoint being requested.
     * @param requestData The data being sent in the request.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforePatchUrlRequest(url?: string, requestData?: any, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed before making a `DELETE` request to a specified URL.
     *
     * - If it returns `false`, the request will be canceled.
     * - Default implementation returns `true`.
     *
     * @param url The API endpoint being requested.
     * @param requestData The data being sent in the request.
     * @param options Additional request options.
     * @returns `boolean | void` (Returning `false` cancels the request)
     */
    beforeDeleteUrlRequest(url?: string, requestData?: any, options?: Record<string, any>): boolean | void;
    /**
     * Hook function executed after completing a `GET` request to a specified URL.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterGetUrlRequest(responseData?: {
        data: any;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `POST` request to a specified URL.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterPostUrlRequest(responseData?: {
        data: any;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `PUT` request to a specified URL.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterPutUrlRequest(responseData?: {
        data: any;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `PATCH` request to a specified URL.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterPatchUrlRequest(responseData?: {
        data: any;
        response: Response;
    }): boolean | void;
    /**
     * Hook function executed after completing a `DELETE` request to a specified URL.
     *
     * This function allows post-processing of the API response.
     *
     * - If it returns `false`, the response will be nullified.
     * - Default implementation does nothing.
     *
     * @param responseData The response object containing `data` and `response`.
     * @returns `boolean | void` (Returning `false` nullifies the response)
     */
    afterDeleteUrlRequest(responseData?: {
        data: any;
        response: Response;
    }): boolean | void;
    /**
     * Intercepts and processes API responses before returning them to the caller.
     *
     * - If it returns `false`, the response is ignored.
     * - Default implementation returns `true`.
     *
     * @param result The `DataWrapper` object containing the API response.
     * @param response The raw `Response` object from the fetch request.
     * @returns `boolean | void` (Returning `false` cancels further processing)
     */
    interceptApiResult(result: InterfaceDataWrapper | undefined, response: Response): boolean | void;
    /**
     * Intercepts and processes API errors before returning them to the caller.
     *
     * - If it returns `false`, the error is ignored.
     * - Default implementation returns `true`.
     *
     * @param error The encountered error.
     * @returns `boolean | void` (Returning `false` cancels further error handling)
     */
    interceptApiError(error: any): boolean | void;
}

export { MinuteFormat }

export declare const MODAL_PLACEMENT_VALUES: readonly ["header-left", "header-center", "header-right", "footer-left", "footer-center", "footer-right"];

export declare enum ModalPlacement {
    headerLeft = "header-left",
    headerCenter = "header-center",
    headerRight = "header-right",
    footerLeft = "footer-left",
    footerCenter = "footer-center",
    footerRight = "footer-right"
}

export declare type ModalPlacementValue = 'header-left' | 'header-center' | 'header-right' | 'footer-left' | 'footer-center' | 'footer-right';

export { MonthFormat }

export { MonthFullName }

export { MonthShortName }

export declare const NOTE_MODE_BY_DEVICE_VALUES: readonly ["ADAPTIVE", "MOBILE", "DESKTOP"];

export { NoteData }

export { NoteFileData }

export { NoteImageData }

export { NoteLinkData }

export { NoteModeByDevice }

export declare type NoteModeByDeviceValue = 'ADAPTIVE' | 'MOBILE' | 'DESKTOP';

export { NoteToolPosition }

export { NoteVideoData }

export declare const SCREEN_POSITION_VALUES: readonly ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"];

export declare enum ScreenPosition {
    topLeft = "top-left",
    topCenter = "top-center",
    topRight = "top-right",
    middleLeft = "middle-left",
    middleCenter = "middle-center",
    middleRight = "middle-right",
    bottomLeft = "bottom-left",
    bottomCenter = "bottom-center",
    bottomRight = "bottom-right"
}

export declare type ScreenPositionValue = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';

export { SecondFormat }

export declare const SELECTION_POLICY_VALUES: readonly ["single", "range", "none"];

export { SelectionPolicy }

export declare type SelectionPolicyValue = typeof SELECTION_POLICY_VALUES[number];

export { Shield }

declare interface ShieldConfig {
    /**
     * The URL used to enforce access restrictions.
     *
     * If this value is set, the system verifies whether the current location matches
     * the specified URL. If not, access may be blocked.
     *
     * - Default value: `""` (empty string, meaning no restriction)
     * - Used in `shield.execute(hison: Hison)` to validate the URL.
     */
    shieldURL: string;
    /**
     * A list of IP addresses that are allowed to bypass security restrictions.
     *
     * When the shield mechanism is activated, only these IPs are granted access.
     *
     * - Default value: `["0:0:0:0:0:0:0:1"]` (allows localhost)
     * - Used in `shield.execute(hison: Hison)` to verify access permissions.
     */
    exposeIpList: string[];
    /**
     * Determines whether the `Hison` instance should be frozen to prevent modifications.
     *
     * If `true`, the `Hison` object and its properties are deeply frozen using `Object.freeze()`,
     * ensuring that no further changes can be made.
     *
     * - Default value: `true`
     * - Used in `shield.execute(hison: Hison)`, where `deepFreeze(hison)` is applied.
     */
    isFreeze: boolean;
    /**
     * Determines whether the browser's back navigation is allowed.
     *
     * If `false`, a mechanism is implemented to prevent the user from navigating back.
     *
     * - Default value: `false`
     * - Used in `shield.execute(hison: Hison)`, where `history.pushState()` is applied
     *   to disable the back button.
     */
    isPossibleGoBack: boolean;
    /**
     * Determines whether developer tools can be opened.
     *
     * If `false`, an event listener is added to detect developer mode access (F12 key,
     * browser dev tools, resizing, etc.), and alerts the user if an attempt is detected.
     *
     * - Default value: `false`
     * - Used in `shield.execute(hison: Hison)`, where `shieldFuncCreateBlockDevMode()` is triggered.
     */
    isPossibleOpenDevTool: boolean;
    /**
     * A custom function that is executed when detecting that developer tools may be opened.
     *
     * This hook allows developers to define specific behaviors when the system detects that
     * the browser's developer tools are likely active.
     *
     * - By default, this function does nothing (`() => {}`).
     * - Developers can customize it using `hison.setDoDetectDevTool(func)`.
     * - Common custom actions include inserting a `debugger;`, showing alerts, or halting program flow.
     *
     * - Default value: `() => {}` (no action)
     * - Used in `shield.execute(hison: Hison)` when attempting to detect devtool access.
     *
     * ---
     * ### Example Usage
     *
     * ```typescript
     * hison.setDoDetectDevTool(() => {
     *   debugger; // Pause execution when devtools are detected
     * });
     * ```
     *
     * ### Notes
     * - This function is triggered during events like `resize`, `mousemove`, `focus`, and `blur` to detect suspicious behavior.
     * - It is up to the developer to define the action taken (e.g., throwing errors, stopping execution, etc.).
     *
     * @remarks
     * This hook offers flexibility without enforcing a specific anti-debugging behavior at the library level.
     *
     * @see `hison.setDoDetectDevTool(func: () => void)`
     */
    doDetectDevTool(): void;
}

export declare enum Size {
    xs = "xs",
    s = "s",
    m = "m",
    l = "l",
    xl = "xl"
}

export declare const SPINNER_TYPE_VALUES: readonly ["ring", "dots", "bars", "pulse"];

export declare enum SpinnerType {
    ring = "ring",
    dots = "dots",
    bars = "bars",
    pulse = "pulse"
}

export declare type SpinnerTypeValue = 'ring' | 'dots' | 'bars' | 'pulse';

export declare const TEXT_ALIGN_VALUES: readonly ["left", "center", "right"];

export declare enum TextAlign {
    left = "left",
    center = "center",
    right = "right"
}

export declare type TextAlignValue = typeof TEXT_ALIGN_VALUES[number];

export { TimeFormat }

export { TimeObject }

export declare const TOOL_POSITION_VALUES: readonly ["TOP", "BOTTOM"];

export declare type ToolPositionValue = 'TOP' | 'BOTTOM';

export { Utils }

declare interface UtilsConfig {
    /**
     * The default format for displaying dates.
     *
     * This format is used throughout the `hisondev` solution for parsing
     * and formatting date values.
     *
     * - Default value: `'yyyy-MM-dd'`
     * - Example output: `'2025-02-04'` (for February 4, 2025)
     * - Can be modified using `setDateFormat(format: string)`.
     */
    dateFormat: keyof typeof DateFormat;
    /**
     * The default format for displaying time.
     *
     * This format is used throughout the `hisondev` solution for parsing
     * and formatting time values.
     *
     * - Default value: `'hh:mm:ss'`
     * - Example output: `'14:30:15'` (for 2:30:15 PM)
     * - Can be modified using `setTimeFormat(format: string)`.
     */
    timeFormat: keyof typeof TimeFormat;
    /**
     * The default format for displaying date and time.
     *
     * This format is used throughout the `hisondev` solution for parsing
     * and formatting datetime values.
     *
     * - Default value: `'yyyy-MM-dd hh:mm:ss'`
     * - Example output: `'2025-02-04 14:30:15'` (for February 4, 2025, 2:30:15 PM)
     * - Can be modified using `setDatetimeFormat(format: string)`.
     */
    datetimeFormat: keyof typeof DateTimeFormat;
    /**
     * The default format for displaying the year.
     *
     * This format is used to represent year values in date-related operations.
     *
     * - Default value: `'yyyy'`
     * - Example output: `'2025'` (for the year 2025)
     * - Can be modified using `setYearFormat(format: string)`.
     */
    yearFormat: keyof typeof YearFormat;
    /**
     * The default format for displaying the month.
     *
     * This format is used to represent month values in date-related operations.
     *
     * - Default value: `'M'`
     * - Example output: `'2'` (for February)
     * - Can be modified using `setMonthFormat(format: string)`.
     */
    monthFormat: keyof typeof MonthFormat;
    /**
     * The default format for displaying year and month.
     *
     * This format is used to represent a combination of year and month in date-related operations.
     *
     * - Default value: `'yyyy-MM'`
     * - Example output: `'2025-02'` (for February 2025)
     * - Can be modified using `setYearMonthFormat(format: string)`.
     */
    yearMonthFormat: keyof typeof YearMonthFormat;
    /**
     * The default format for displaying the day of the month.
     *
     * This format is used to represent the day component in date-related operations.
     *
     * - Default value: `'d'`
     * - Example output: `'4'` (for the 4th day of the month)
     * - Can be modified using `setDayFormat(format: string)`.
     */
    dayFormat: keyof typeof DayFormat;
    /**
     * The default format for displaying the day of the week.
     *
     * This format is used to represent the day of the week in date-related operations.
     *
     * - Default value: `'d'`
     * - Example output: `'3'` (where 3 could represent Wednesday depending on locale settings)
     * - Can be modified using `setDayOfWeekFormat(format: string)`.
     */
    dayOfWeekFormat: keyof typeof DayOfWeekFormat;
    /**
     * Defines the default format for displaying the hour in 24-hour time operations.
     *
     * ### Behavior
     * - `'h'`  → Displays the hour without leading zero. (e.g., `"5"` for 5 AM, `"13"` for 1 PM)
     * - `'hh'` → Displays the hour with leading zero if needed. (e.g., `"05"` for 5 AM, `"13"` for 1 PM)
     *
     * ### Details
     * - This format is used internally in time-related methods like `getSysHour()`.
     * - If no specific format is provided when calling those methods, this default is used.
     *
     * ### Default Value
     * - `'h'`
     *
     * ### Example Outputs
     * - 5 AM → `'5'` with `'h'`, `'05'` with `'hh'`
     * - 1 PM → `'13'` with `'h'` or `'hh'`
     *
     * ### Modification
     * - Can be modified using the `setHourFormat(format: HourFormat)` method.
     */
    hourFormat: keyof typeof HourFormat;
    /**
     * The default format for displaying the hour and minute.
     *
     * This format is used to represent the time in hours and minutes.
     *
     * - Default value: `'hh:mm'`
     * - Example output: `'14:30'` (for 2:30 PM in 24-hour format)
     * - Can be modified using `setHourMinuteFormat(format: string)`.
     */
    hourMinuteFormat: keyof typeof HourMinuteFormat;
    /**
     * The default format for displaying the minute.
     *
     * This format is used to represent the minute component in time-related operations.
     *
     * - Default value: `'m'`
     * - Example output: `'5'` (for the 5th minute of the hour)
     * - Can be modified using `setMinuteFormat(format: string)`.
     */
    minuteFormat: keyof typeof MinuteFormat;
    /**
     * The default format for displaying the second.
     *
     * This format is used to represent the second component in time-related operations.
     *
     * - Default value: `'s'`
     * - Example output: `'45'` (for the 45th second of the minute)
     * - Can be modified using `setSecondFormat(format: string)`.
     */
    secondFormat: keyof typeof SecondFormat;
    /**
     * The default format for displaying numbers.
     *
     * This format is used to represent numeric values with grouping separators and decimal precision.
     *
     * - Default value: `"#,##0.##"`
     * - Example output: `"1,234.56"` (for the number `1234.56`)
     * - Can be modified using `setNumberFormat(format: string)`.
     */
    numberFormat: string;
    /**
     * The byte size used for characters with a char code less than or equal to `0x7FF`.
     *
     * This value defines the number of bytes required to encode characters in this range.
     *
     * - Default value: `2`
     * - Represents characters with `charCode <= 0x7FF`
     */
    LESSOREQ_0X7FF_BYTE: number;
    /**
     * The byte size used for characters with a char code less than or equal to `0xFFFF`.
     *
     * This value defines the number of bytes required to encode characters in this range.
     *
     * - Default value: `3`
     * - Represents characters with `charCode <= 0xFFFF`
     */
    LESSOREQ_0XFFFF_BYTE: number;
    /**
     * The byte size used for characters with a char code greater than `0xFFFF`.
     *
     * This value defines the number of bytes required to encode characters in this range.
     *
     * - Default value: `4`
     * - Represents characters with `charCode > 0xFFFF`
     */
    GREATER_0XFFFF_BYTE: number;
}

export { Vanillagrid }

export { VanillagridConfig }

export { Vanillanote }

export { VanillanoteConfig }

export { VanillanoteElement }

export { Variables }

export declare const VERTICAL_ALIGN_VALUES: readonly ["top", "middle", "bottom"];

export declare enum VerticalAlign {
    top = "top",
    middle = "middle",
    bottom = "bottom"
}

export declare type VerticalAlignValue = typeof VERTICAL_ALIGN_VALUES[number];

export { VuecalNS }

export declare const WHITE_SPACE_VALUES: readonly ["normal", "pre", "pre-wrap", "pre-line", "break-spaces"];

export declare enum WhiteSpace {
    normal = "normal",
    pre = "pre",
    preWrap = "pre-wrap",
    preLine = "pre-line",
    breakSpaces = "break-spaces"
}

export declare type WhiteSpaceValue = typeof WHITE_SPACE_VALUES[number];

export { YearFormat }

export { YearMonthFormat }

export { }


declare module 'vue' {
    interface GlobalComponents {
        /**
         * Hisonvue custom accordion component.
         *
         * `HAccordion` is a lightweight accordion with a fixed header and a body that can expand/collapse.
         * The header title is rendered via the `title` prop or the `#title` slot, while the body uses the
         * default slot, allowing free placement of other components (e.g. `HLayout`, `HInput`, `HButton`, `HDropdown`).
         * The expand/collapse animation is pure CSS (0fr ↔ 1fr), and each instance can control duration and easing.
         *
         * ---
         *
         * ### 🎯 Features
         * - Fixed header + collapsible body
         * - Flexible content slot to embed **any layout/component**
         * - Header text alignment (`left` / `center` / `right`)
         * - Pure CSS transition (default 0.5s / `ease`) — controllable via `duration`, `easing` per instance
         * - Runtime API access: `hison.component.getAccordion(id)`
         * - Default caret (▾) included, replaceable via `#toggle` slot
         * - Responsive class support (`hison-*`) and automatic color/size theme suffixes (`-accordion`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HAccordion
         *   id="acc1"
         *   class="hison-col-12 hison-size-m-mb hison-size-s-pc hison-color-primary-pc"
         *   :defaultOpen="false"
         *   title="Filters"
         *   textAlign="center"
         * >
         *   <HLayout class="hison-col-12" style="height: 100px">
         *     <HInput class="hison-col-4" :modelValue="'abc'"/>
         *     <HButton class="hison-col-4" :text="'Search'"/>
         *     <HDropdown class="hison-col-4" :modelValue="{ value: null, options: [{label:'One', value:1}] }" />
         *   </HLayout>
         * </HAccordion>
         * ```
         *
         * #### Custom toggle
         * ```vue
         * <HAccordion id="acc2" title="Advanced" :defaultOpen="true">
         *   <template #toggle>
         *     <HButton class="hison-color-success" text="Toggle" />
         *   </template>
         *   <div>Any content here…</div>
         * </HAccordion>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * ```ts
         * const acc = hison.component.getAccordion('acc1')
         * acc.open()
         * acc.setTitle('Advanced Filters')
         * acc.setTextAlign('right')
         * acc.setDuration(800)
         * acc.setEasing('ease-in-out')
         * ```
         *
         * ---
         *
         * @slot title   Replaces the header title area completely. Falls back to `title` prop if not provided.
         * @slot toggle  Replaces the toggle UI on the right. Defaults to caret (▾) with same class as `HDropdown`.
         * @slot default Body content slot. Any component can be placed here.
         *
         * @prop {string} id - Unique identifier. Access at runtime via `hison.component.getAccordion(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional classes. Supports the `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Root container inline style. Uses CSS vars `--hacc-duration`, `--hacc-easing`.
         * @prop {string | CSSProperties | CSSProperties[]} [headerStyle] - Inline style for the header area.
         * @prop {string | CSSProperties | CSSProperties[]} [contentStyle] - Inline style for the body container.
         *
         * @prop {boolean} [visible=true] - Visibility of the component.
         * @prop {boolean} [defaultOpen=false] - Initial open state.
         * @prop {string}  [title=''] - Header title (used if `#title` slot is not provided).
         * @prop {('left'|'center'|'right')} [textAlign='left'] - Header title alignment.
         * @prop {boolean} [animate=true] - Enable expand/collapse animation.
         * @prop {number}  [duration=500] - Animation duration (ms). Passed via CSS var `--hacc-duration`.
         * @prop {string}  [easing='ease'] - CSS timing function. Passed via CSS var `--hacc-easing`.
         *
         * ---
         *
         * @event mounted - Fired when component is mounted. `(HAccordionMethods)`
         * @event responsive-change - Fired when device breakpoint changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         * @event open - Fired when the body expands. `(Event|null, HAccordionMethods)`
         * @event close - Fired when the body collapses. `(Event|null, HAccordionMethods)`
         * @event toggle - Fired when toggled via header click/Enter/Space. `(MouseEvent|KeyboardEvent, HAccordionMethods)`
         *
         * ---
         *
         * #### ♿ Accessibility
         * - Header: `role="button"`, `tabindex="0"`, `aria-expanded`
         * - Content: `role="region"`, `aria-hidden`
         */
        HAccordion: typeof HAccordion;
        /**
         * Hisonvue custom baggie (badge) component.
         *
         * `HBaggie` overlays a small badge on top of any target element (slot).
         * It supports responsive classes, multiple screen positions, shape/background/border
         * customization, and full runtime control via `HBaggieMethods`
         * (visibility, z-index, position, text, etc.).
         *
         * ---
         *
         * ### 🎯 Features
         * - Slot-based target element: consumer places any component/element as the badge anchor
         * - 8-way positioning around the target (`top-left`, `top-center`, `top-right`, etc.)
         * - Separate visibility for anchor (`visible`) vs. badge only (`baggieVisible`)
         * - Shape customization: `square`, `rounded`, `circle`
         * - Background types: `filled`, `empty`, `transparent`
         * - Optional border/shadow styling
         * - Button-like interaction support (`buttonEnabled`) with CSS states
         * - Runtime registration using unique `id`, accessible via `hison.component.getBaggie(id)`
         * - Responsive class extraction (`hison-col-*`, `hison-size-*`, `hison-color-*`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HBaggie
         *   id="bag01"
         *   class="hison-color-danger"
         *   position="top-right"
         *   text="9+"
         *   shape="circle"
         *   :border="true"
         *   :buttonEnabled="true"
         *   :visible="true"
         *   :baggieVisible="true"
         *   :zIndex="1200"
         *   @click="onBadgeClick"
         *   @mounted="onMounted"
         * >
         *   <!-- target element -->
         *   <HButton
         *     id="btn01"
         *     class="hison-size-m"
         *     text="Inbox"
         *   />
         *
         *   <!-- replace badge content -->
         *   <template #badge>
         *     <IconBell />
         *   </template>
         * </HBaggie>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the baggie programmatically using `hison.component.getBaggie(id)`:
         *
         * ```ts
         * const baggie = hison.component.getBaggie('bag01');
         * baggie.setText('99+');
         * baggie.setShape('circle');
         * baggie.setPosition('bottom-left');
         * baggie.setButtonEnabled(true);
         * baggie.setZIndex(2000);
         * ```
         *
         * ---
         *
         * ### ⚠️ Notes on z-index & Visibility
         * - `zIndex` applies to the anchor element; the badge is always rendered at `zIndex + 1`.
         * - `visible=false` hides both target and badge.
         *   `baggieVisible=false` hides only the badge, leaving the target visible.
         * - If the target element has width constraints (e.g. `hison-col-*`), the anchor enforces `width:100%`
         *   to ensure alignment between target and badge.
         *
         * ---
         *
         * @prop {string} id - Unique baggie identifier for method registration (`hison.component.getBaggie(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive/custom classes (`hison-col-*`, etc.).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the badge element.
         *
         * @prop {boolean} [visible=true] - Anchor visibility (controls both target and badge).
         * @prop {boolean} [baggieVisible=true] - Badge-only visibility (target remains visible).
         *
         * @prop {number} [zIndex=1000] - Base z-index (anchor); badge renders at `zIndex + 1`.
         * @prop {('top-left'|'top-center'|'top-right'|'middle-left'|'middle-center'|'middle-right'|'bottom-left'|'bottom-center'|'bottom-right')} [position='top-right'] - Badge position relative to target.
         *
         * @prop {string} [text] - Text displayed inside the badge (ignored if slot `#badge` is used).
         * @prop {('filled'|'empty'|'transparent')} [backgroundType='filled'] - Badge background style.
         * @prop {boolean} [border=true] - Whether the badge has border/shadow styling.
         * @prop {('square'|'rounded'|'circle')} [shape='rounded'] - Shape of the badge.
         *
         * @prop {number|string|null} [tabIndex=null] - Tab order; `null` removes focusability.
         * @prop {boolean} [buttonEnabled=false] - Enables button-like interaction states.
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HBaggieMethods` instance for runtime control.
         * @event click - Emitted when badge is clicked (if `buttonEnabled=true`).
         * @event mousedown - Emitted on badge `mousedown`.
         * @event mouseup - Emitted on badge `mouseup`.
         * @event mouseover - Emitted on badge `mouseover`.
         * @event mouseout - Emitted on badge `mouseout`.
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HBaggie: typeof HBaggie;
        /**
         * Hisonvue custom banner (carousel) component.
         *
         * `HBanner` is a lightweight, horizontal carousel inspired by Bootstrap’s Carousel.
         * It renders each direct child of the default slot as a slide, supports prev/next
         * navigation, page indicators (dots), autoplay/looping, and runtime control via
         * `HBannerMethods`. Slides are centered within the viewport for clean presentation.
         *
         * ---
         *
         * ### 🎯 Features
         * - Slot-based slides: each direct child of the default slot becomes one slide
         * - Simple horizontal transition with configurable duration
         * - Prev/Next navigation buttons (default or fully replaceable via slots)
         * - Page indicators (● ● ●), optionally overlaid inside the banner
         * - Autoplay with direction control and hover-pause
         * - Looping at edges (optional)
         * - Runtime registration using unique `id`, accessible via `hison.component.getBanner(id)`
         * - Responsive class extraction (`hison-col-*`, `hison-size-*`, `hison-color-*`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HBanner
         *   id="bn-basic"
         *   class="hison-size-m hison-color-primary"
         *   :initialIndex="0"
         *   :transitionMs="400"
         *   :showNavButtons="true"
         *   :showIndicators="true"
         * >
         *   <HLayout class="hison-col-6">Slide 1</HLayout>
         *   <HLayout class="hison-col-6">Slide 2</HLayout>
         *   <HLayout class="hison-col-6">Slide 3</HLayout>
         * </HBanner>
         * ```
         *
         * ```vue
         * <HBanner
         *   id="bn-overlay"
         *   class="hison-size-m hison-color-info"
         *   :autoIntervalMs="3000"
         *   autoDirection="next"
         *   :pauseOnHover="true"
         *   indicatorsPosition="overlay"
         * >
         *   <template #prev-button="{ prev, disabled }">
         *     <HButton :disable="disabled"><template #icon>◀</template></HButton>
         *   </template>
         *   <template #next-button="{ next, disabled }">
         *     <HButton :disable="disabled"><template #icon>▶</template></HButton>
         *   </template>
         *
         *   <HLayout>One</HLayout>
         *   <HLayout>Two</HLayout>
         *   <HLayout>Three</HLayout>
         * </HBanner>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the banner programmatically using `hison.component.getBanner(id)`:
         *
         * ```ts
         * const banner = hison.component.getBanner('bn-basic');
         * banner.setInitialIndex(1);
         * banner.setAutoInterval(2500);
         * banner.startAuto();
         * banner.setIndicatorsPosition('overlay');
         * banner.next();
         * ```
         *
         * ---
         *
         * ### ⚠️ Notes
         * - Each **direct child** of the default slot is treated as a slide.
         * - When `loop` is `false`, navigation is clamped at the first/last slide and
         *   nav buttons may appear disabled.
         * - Autoplay is disabled when `autoIntervalMs < 100`.
         * - If `pauseOnHover` is `true`, hovering pauses autoplay.
         * - Slides are centered inside the viewport for natural alignment of narrower content.
         *
         * ---
         *
         * @prop {string} id - Unique banner identifier for method registration (`hison.component.getBanner(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive/custom classes (`hison-col-*`, etc.).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the banner frame.
         *
         * @prop {boolean} [visible=true] - Banner frame visibility.
         * @prop {('filled'|'empty'|'transparent')} [backgroundType='filled'] - Frame background style.
         * @prop {boolean} [border=false] - Whether the frame shows border/shadow styling.
         *
         * @prop {number} [initialIndex=0] - Zero-based index of the first slide to show.
         * @prop {number} [transitionMs=350] - Transition duration (ms) for slide movement.
         *
         * @prop {('chevron'|'triangle')} [navButtonStyle='chevron'] - Prev/Next button glyph style.
         * @prop {boolean} [showNavButtons=true] - Show prev/next nav buttons.
         * @prop {boolean} [showIndicators=true] - Show page indicators (dots).
         * @prop {('bottom'|'overlay')} [indicatorsPosition='bottom'] - Position of indicators.
         * @prop {boolean} [indicatorClickable=true] - Make indicators clickable.
         *
         * @prop {number} [autoIntervalMs=0] - Autoplay interval (ms); values < 100 disable autoplay.
         * @prop {('next'|'prev')} [autoDirection='next'] - Autoplay direction.
         * @prop {boolean} [loop=true] - Wrap around at edges.
         * @prop {boolean} [pauseOnHover=true] - Pause autoplay on hover.
         *
         * ---
         *
         * @slot default - Slide content; each direct child becomes one slide.
         * @slot prev-button - Fully replaces the default **Prev** button; receives `{ prev, disabled }`.
         * @slot next-button - Fully replaces the default **Next** button; receives `{ next, disabled }`.
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HBannerMethods` instance for runtime control.
         * @event change - Emitted after index change. Args: `(currentIndex, methods)`.
         * @event next - Emitted when moving to next slide. Args: `(currentIndex, methods)`.
         * @event prev - Emitted when moving to previous slide. Args: `(currentIndex, methods)`.
         * @event autoplay-start - Emitted when autoplay starts. Args: `(methods)`.
         * @event autoplay-stop - Emitted when autoplay stops. Args: `(methods)`.
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HBanner: typeof HBanner;
        /**
         * Hisonvue custom button component.
         *
         * `HButton` is a highly customizable and responsive button component that provides styling, state control,
         * and dynamic behavior via props and runtime methods. It is integrated with `hison` for global access and control.
         *
         * ---
         *
         * ### 🎯 Features
         * - Theme-aware styling via responsive class system (`hison-size-*`, `hison-color-*`, etc.)
         * - **Flexible background type control via `backgroundType` prop or methods**
         *   (supports `"filled"` (default), `"empty"`, and `"transparent"` backgrounds, always preserving button's color scheme)
         * - **Automatic prevention of double-clicks:**
         *   - Blocks additional clicks while the click handler is running (using pending lock).
         *   - Provides `unlock()` method for manual unlock in advanced use cases.
         * - **Physical click interval limiting:**
         *   - `clickInterval` prop and methods let you enforce a minimum time between button clicks (e.g. 500ms).
         * - Dynamic visibility and disabled state (`visible`, `disable` props)
         * - Runtime method control (`setText`, `setDisable`, `setVisible`, etc.)
         * - Supports both slot-based and `text` prop-based content:
         *   - If default slot is present, it overrides `text`
         *   - Otherwise, `text` is rendered inside the button
         * - Optional `#icon` slot allows prepending a custom icon or element before the text
         * - Tooltip support via `title` prop and dynamic `setTitle` method
         * - Automatically emits full runtime method object on DOM events (e.g. `@click="(_, btn) => btn.setDisable(true)"`)
         * - Device-aware responsive reload (`@responsive-change`)
         * - Integrated CSS event hooks for advanced interaction logic
         * - Seamless reload via internal `registerReloadable()` support
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <!-- Text-based button with custom background and click interval -->
         * <HButton
         *   id="btn01"
         *   class="hison-col-6 hison-color-primary"
         *   text="Click Me"
         *   title="Tooltip text"
         *   background-type="empty"
         *   :click-interval="500"
         *   :disable="false"
         *   :visible="true"
         *   @click="async (_, btn) => {
         *     // Your async logic
         *     await doSomething();
         *     btn.unlock(); // (optional) manually unlock if needed
         *   }"
         * />
         *
         * <!-- Default slot content -->
         * <HButton id="btn02">
         *   <strong>Custom Slot</strong>
         * </HButton>
         *
         * <!-- With icon slot -->
         * <HButton id="btn03" text="Download">
         *   <template #icon>
         *     <i class="fa fa-download" style="margin-right: 4px" />
         *   </template>
         * </HButton>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getButton(id)` to retrieve control methods at runtime:
         *
         * ```ts
         * const btn = hison.component.getButton('btn01');
         * btn.setText('Updated');
         * btn.setDisable(true);
         * btn.setVisible(false);
         * btn.setTitle('Updated tooltip');
         * btn.setBackgroundType('transparent'); // change to transparent background
         * btn.setClickInterval(1000); // set to allow clicks every 1 second
         * btn.unlock(); // manually unlock if you want to allow another click before async handler resolves
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique button identifier. Enables runtime access via `hison.component.getButton(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         * @prop {boolean} [visible] - Whether the button is shown (`'true'` or `'false'`). Default: `'true'`.
         * @prop {boolean} [disable] - Whether the button is disabled. Default: `'false'`.
         * @prop {string} [text] - Fallback label text if no default slot is provided. Can be updated at runtime.
         * @prop {string} [title] - Tooltip text. Can be updated via `setTitle()`.
         * @prop {boolean} [border] - Whether to show border (box-shadow). Default: `true`.
         * @prop {('filled'|'empty'|'transparent')} [backgroundType] - Background style. `'filled'` (default), `'empty'`, or `'transparent'`. Can be changed at runtime via methods.
         * @prop {number} [clickInterval] - Minimum interval (in ms) between allowed clicks. Prevents repeated clicks within the specified time. Can be changed at runtime.
         * @prop {number|string|null} [tabIndex] - `tabindex` for element. `0` = natural focus order, `null` = not focusable.
         *
         * ---
         *
         * @slot default - Default content inside the button. Overrides `text` prop if present.
         * @slot icon - Optional icon or prefix element rendered before the button label.
         *
         * ---
         *
         * @event mounted - Emitted after mounting. Passes `HButtonMethods` instance.
         * @event click - Emitted on click. Passes `(MouseEvent, HButtonMethods)` tuple.
         * @event mousedown - Emitted on mousedown. Passes `(MouseEvent, HButtonMethods)` tuple.
         * @event mouseup - Emitted on mouseup. Passes `(MouseEvent, HButtonMethods)` tuple.
         * @event mouseover - Emitted on mouseover. Passes `(MouseEvent, HButtonMethods)` tuple.
         * @event mouseout - Emitted on mouseout. Passes `(MouseEvent, HButtonMethods)` tuple.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HButton: typeof HButton;
        /**
         * Hisonvue custom calendar component.
         *
         * ### Built with `vue-cal@^4.10.2` for full compatibility.
         * `HCalendar` is a fully-featured calendar component built on top of `vue-cal`,
         * designed for seamless integration with Hison runtime. It supports multiple views,
         * event scheduling, special time ranges, localization, and dynamic configuration.
         *
         * ---
         *
         * ### 📅 Features
         * - Multiple views supported: `'day'`, `'week'`, `'month'`, `'year'`, `'years'`
         * - Dynamic runtime control via `HCalendarMethods` (`hison.component.getCalendar(id)`)
         * - Responsive layout using `hison-col-*`, `hison-pos-*`, `hison-size-*` classes
         * - Visual customization: weekend colors, special time zones, date highlights
         * - Event data rendering with full editing options (`deletable`, `resizable`, etc.)
         * - Device-aware styling and slot passthrough support
         *
         * ---
         *
         * ### 🔄 Compatibility with vue-cal
         * `HCalendar` transparently passes any additional `props` and `events` directly to the underlying `vue-cal` instance.
         * 👉 **If a prop or event is not listed in this documentation, you can still use it exactly as defined in `vue-cal`.**
         * 📚 For full list of available options, refer to:
         * https://antoniandre.github.io/vue-cal
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HCalendar
         *   id="calendar1"
         *   class="hison-col-12"
         *   :selectedDate="today"
         *   :events="myEvents"
         *   :specialTime="highlightedRanges"
         *   weekendColor="#f55"
         *   :weekendDays="[0, 6]"
         *   :showTodayColor="true"
         *   :hideWeekdays="[2]"
         *   :disableDays="['2025-06-30']"
         *   :visible="true"
         *   :disable="false"
         *   :startWeekOnSunday="false"
         *   :locale="'ko'"
         *   activeView="month"
         *   :disableViews="['year', 'years']"
         *   @day-click="handleDayClick"
         * />
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getCalendar(id)` to retrieve methods at runtime:
         *
         * ```ts
         * const calendar = hison.component.getCalendar('calendarId');
         * calendar.setVisible(false);
         * calendar.setDisable(true);
         * calendar.setSelectedDate('2025-07-01');
         * calendar.setEvents([{ start: '2025-07-02', end: '2025-07-02', title: 'Meeting' }]);
         * calendar.setTimeFormat('HH:mm');
         * calendar.setActiveView('week');
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique calendar identifier. Enables runtime access via `hison.component.getCalendar(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         * @prop {boolean} [visible='true'] - Whether the calendar is shown.
         * @prop {boolean} [disable=false] - Whether the calendar is disabled.
         * @prop {string | Date} [selectedDate] - Initially selected date.
         * @prop {HCalendarEvent[]} [events=[]] - List of events to display.
         * @prop {string} [weekendColor] - CSS color for weekend background.
         * @prop {number[]} [weekendDays] - Indexes of days (0~6) treated as weekends.
         * @prop {boolean} [showTodayColor=true] - Highlight today’s date with a background.
         * @prop {string} [selectedColor] - CSS background for selected date.
         * @prop {HCalendarSpecialTimeMap} [specialTime] - Map of special time ranges by weekday.
         * @prop {number} [dateCellMinHeight] - Minimum height of date cell in month view (px).
         * @prop {number} [dateCellMaxHeight] - Maximum height of date cell in month view (px).
         * @prop {string[]} [disableDays] - List of dates to disable selection.
         * @prop {string | boolean} [eventsOnMonthView=false] - Controls event rendering in month view.
         * @prop {number[]} [hideWeekdays] - Weekdays to hide (0 = Sun, ..., 6 = Sat).
         * @prop {boolean} [hideWeekends=false] - Whether to hide weekends.
         * @prop {string} [locale='en'] - Calendar language locale.
         * @prop {string | Date} [maxDate] - Maximum selectable date.
         * @prop {string | Date} [minDate] - Minimum selectable date.
         * @prop {boolean} [startWeekOnSunday=false] - Whether the week starts on Sunday.
         * @prop {boolean} [time=true] - Whether to show time cells in week/day views.
         * @prop {number} [timeCellHeight] - Height of each time cell (px).
         * @prop {('H' | 'HH' | 'h' | 'hh' | 'm' | 'mm' | 'H:m' | 'H:mm' | 'HH:m' | 'HH:mm' | 'h:m' | 'h:mm' | 'hh:m' | 'hh:mm' | 'H{am}' | 'HH{am}' | 'h{am}' | 'hh{am}' | 'm{am}' | 'mm{am}' | 'H:m{am}' | 'H:mm{am}' | 'HH:m{am}' | 'HH:mm{am}' | 'h:m{am}' | 'h:mm{am}' | 'hh:m{am}' | 'hh:mm{am}')} [timeFormat] - Format for displaying time cells.
         * @prop {number} [timeFrom] - Start of time range (minutes from midnight).
         * @prop {number} [timeStep] - Interval step for time slots (in minutes).
         * @prop {number} [timeTo] - End of time range (minutes from midnight).
         * @prop {boolean} [hideTitleBar=false] - Whether to hide the title bar.
         * @prop {boolean} [twelveHour=false] - Whether to show time in 12-hour format (with am/pm).
         * @prop {('day' | 'week' | 'month' | 'year' | 'years')} [activeView] - Initial view (`'day'`, `'week'`, `'month'`, etc.).
         * @prop {('day' | 'week' | 'month' | 'year' | 'years')[]} [disableViews] - Views to exclude from navigation.
         *
         * ---
         *
         * @event ready - Emitted once after initial render. Passes { view, startDate, endDate, week? }.
         * @event mounted - Emitted when the calendar is mounted.
         * @event responsive-change - Emitted when responsive device class changes.
         * @event cell-click - Emitted when an cell is clicked.
         * @event view-change - Emitted when the calendar view changes.
         * @event nav-click - Emitted when a navigation arrow is clicked. Passes { direction: 'prev' | 'next' }.
         * @event title-click - Emitted when the calendar header title is clicked. Passes { date, view }.
         * @event hour-click - Emitted when an hour slot is clicked in day/week view. Passes { date, view, hour }.
         * @event time-range-select - Emitted when selecting a time range via drag. Passes { startDate, endDate }.
         * @event event-click - Emitted when an event is clicked. Passes the event object.
         * @event event-dblclick - Emitted when an event is double-clicked. Passes the event object.
         * @event event-create - Emitted after creating a new event. Passes (event, action) where action is 'click' or 'drag'.
         * @event event-delete - Emitted when an event is deleted. Passes the deleted event object.
         * @event event-update - Emitted after an event is moved or resized. Passes (event, domEvent?).
         * @event event-drag-start - Emitted when an event drag starts. Passes the dragged event.
         * @event event-drag - Emitted continuously during event dragging. Passes the event.
         * @event event-drag-end - Emitted when dragging ends. Passes the event.
         * @event event-resize-start - Emitted when event resize starts. Passes the event.
         * @event event-resize - Emitted continuously during resize. Passes the event.
         * @event event-resize-end - Emitted when resize ends. Passes the event.
         * @event event-mouse-enter - Emitted when mouse enters an event block. Passes (event, mouseEvent).
         * @event event-mouse-leave - Emitted when mouse leaves an event block. Passes (event, mouseEvent).
         * @event cell-drag-start - Emitted when dragging on empty cell starts. Passes { startDate, endDate, view }.
         * @event cell-drag - Emitted during drag over cells. Passes { startDate, endDate, view }.
         * @event cell-drag-end - Emitted when dragging ends. Passes { startDate, endDate, view }.
         * @event cell-hover-in - Emitted when mouse enters a cell. Passes { date, view }.
         * @event cell-hover-out - Emitted when mouse leaves a cell. Passes { date, view }.
         */
        HCalendar: typeof HCalendar;
        /**
         * Hisonvue custom caption (heading) component.
         *
         * `HCaption` is a semantic heading component (`<h1>`–`<h6>`) with theme-aware styling,
         * responsive behavior, and full runtime control. It is designed to replace raw `h1`–`h6`
         * tags with a consistent style system, while still preserving SEO/accessibility benefits.
         *
         * ---
         *
         * ### 🎯 Features
         * - Renders as actual heading tags (`<h1>` ~ `<h6>`) according to the `level` prop.
         * - Theme-aware styling via responsive class system (`hison-size-*`, `hison-color-*`, etc.).
         * - **Dynamic content control:**
         *   - Uses `text` prop if no slot is provided.
         *   - If default slot is *pure text nodes*, they are absorbed and controllable via `getText/setText`.
         *   - If default slot contains elements, slot content takes precedence and text control is disabled.
         * - **Font style toggles**: `fontBold`, `fontItalic`, `fontThruline`, `fontUnderline`.
         * - **Border (box-shadow) toggle**: `border` prop or runtime methods.
         * - **Background type control**: `backgroundType` prop or runtime methods (`'empty'` (default), `'filled'`, `'transparent'`).
         * - Text alignment via `textAlign` prop and runtime methods (`'left' | 'center' | 'right'`).
         * - Tooltip support via `title` prop and dynamic `setTitle` method.
         * - Emits runtime method object on interaction events (`click`, `mouseover`, etc.).
         * - Device-aware responsive reload (`@responsive-change`).
         * - Seamless reload via internal `registerReloadable()` support.
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <!-- Simple caption -->
         * <HCaption
         *   id="cp1"
         *   class="hison-col-12 hison-size-l hison-color-primary"
         *   text="Main Title"
         *   level="1"
         * />
         *
         * <!-- Slot with custom HTML (overrides text control) -->
         * <HCaption id="cp2" level="2">
         *   <strong>Highlighted</strong> Section
         * </HCaption>
         *
         * <!-- Pure text slot behaves like text prop -->
         * <HCaption id="cp3" level="3">Section Title</HCaption>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getCaption(id)` to retrieve control methods at runtime:
         *
         * ```ts
         * const cp = hison.component.getCaption('cp1');
         * cp.setLevel(2);
         * cp.setText('Updated Title');
         * cp.setTextAlign('center');
         * cp.setFontBold(true);
         * cp.setBorder(true);
         * cp.setBackgroundType('transparent');
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique caption identifier. Enables runtime access via `hison.component.getCaption(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         * @prop {boolean} [visible] - Whether the caption is shown. Default: `true`.
         * @prop {string} [text] - Text content if no slot is used. If slot is pure text, it is converted to internal text as well.
         * @prop {string} [title] - Tooltip text. Can be updated via `setTitle()`.
         * @prop {1|2|3|4|5|6} [level] - Heading level, determines which tag (`<h1>`~`<h6>`) is rendered. Default: `3`.
         * @prop {('left'|'center'|'right')} [textAlign] - Text alignment. Can be changed via methods.
         * @prop {boolean} [border] - Whether to show border (box-shadow). Default: `false`.
         * @prop {('filled'|'empty'|'transparent')} [backgroundType] - Background style. `'empty'` (default), `'filled'`, or `'transparent'`.
         * @prop {boolean} [fontBold] - Bold font style toggle. Default: `true`.
         * @prop {boolean} [fontItalic] - Italic font style toggle. Default: `false`.
         * @prop {boolean} [fontThruline] - Strikethrough font style toggle. Default: `false`.
         * @prop {boolean} [fontUnderline] - Underline font style toggle. Default: `false`.
         *
         * ---
         *
         * @slot default - Default content inside the caption. If only text nodes are provided, behaves like `text` prop (controllable by methods). If elements are provided, overrides text control.
         *
         * ---
         *
         * @event mounted - Emitted after mounting. Passes `HCaptionMethods` instance.
         * @event click - Emitted on click. Passes `(MouseEvent, HCaptionMethods)`.
         * @event mousedown - Emitted on mousedown. Passes `(MouseEvent, HCaptionMethods)`.
         * @event mouseup - Emitted on mouseup. Passes `(MouseEvent, HCaptionMethods)`.
         * @event mouseover - Emitted on mouseover. Passes `(MouseEvent, HCaptionMethods)`.
         * @event mouseout - Emitted on mouseout. Passes `(MouseEvent, HCaptionMethods)`.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HCaption: typeof HCaption;
        /**
         * Hisonvue chart component powered by Chart.js.
         *
         * ### Built with `chart.js@^4.5.0`
         * `HChart` is a lightweight wrapper around [Chart.js](https://www.chartjs.org/),
         * offering full compatibility with all standard chart types, configuration options, and runtime methods.
         *
         * ---
         *
         * #### ⚡️ Robust Chart Instance Lifecycle
         * - **Race-condition safe**: Internal logic guarantees Chart.js `destroy()` and re-creation never overlap,
         *   preventing plugin/DOM errors during rapid reloads, SSR hydration, or hot re-renders.
         * - **DOM-flush guaranteed**: On reload or unmount, the `<canvas>` element is physically removed from the DOM (`v-if="!isPending"`),
         *   and re-created after a flush delay. This ensures Chart.js always operates on a stable, isolated DOM context.
         * - **Configurable reload delay**: The `loadDelay` prop (default: `500ms`) can be adjusted to tune the time between destroy/re-mount.
         *   - Change at runtime via `chartInstance.setLoadDelay(ms)`.
         * - **Single source of chart creation**: The chart creation logic is encapsulated in a single internal function and reused for all lifecycle events.
         *
         * ---
         *
         * ### Features
         * - Supports all built-in Chart.js chart types (`'bar'`, `'line'`, `'pie'`, `'doughnut'`, etc.)
         * - **Full runtime access** via `HChartInstance` (`hison.component.getChart(id)`)
         * - Minimal hisonvue-only styling (`hison-col-*`, `display: none` when hidden)
         * - Automatic color string parsing (e.g., `'red.500'` → rgba format)
         * - Reactive support: Any change to `modelValue`/`options` automatically triggers chart update.
         * - **Direct control of visibility** (`visible` prop, `.setVisible()`)
         * - **Robust hot reload support**: Frequent destroy/recreate cycles are fully safe.
         *
         * ---
         *
         * ### Chart.js Compatibility
         * `HChart` passes your `modelValue` and `options` directly to the native Chart.js engine.
         * There is **no rewriting or abstraction** of Chart.js behavior.
         *
         * 👉 You may refer to the official Chart.js documentation for full API usage:
         * - [ChartData](https://www.chartjs.org/docs/4.5.0/general/data-structures.html)
         * - [ChartOptions](https://www.chartjs.org/docs/4.5.0/configuration/)
         * - [Chart Methods](https://www.chartjs.org/docs/4.5.0/developers/api.html)
         *
         * ---
         *
         * ### Usage Example
         * ```vue
         * <HChart
         *   id="myChart"
         *   type="doughnut"
         *   class="hison-col-6"
         *   :modelValue="chartData"
         *   :options="chartOptions"
         *   :loadDelay="800"
         * />
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage & Methods
         * Use `hison.component.getChart(id)` to retrieve the extended Chart.js instance:
         *
         * ```ts
         * const chart = hison.component.getChart('myChart')
         * chart.data.datasets[0].data = [10, 20, 30]
         * chart.options.plugins.legend.display = false
         * chart.update()
         * chart.setVisible(false)
         * chart.setLoadDelay(1000)  // Change reload delay at runtime
         * chart.reload()            // Safe reload (will never cause plugin/DOM errors)
         * ```
         *
         * ---
         *
         * ### Props
         * @prop {string} id - Unique chart identifier. Enables runtime access via `hison.component.getChart(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional responsive class string (e.g., `hison-col-6`).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS styles.
         * @prop {ChartType} type - Chart.js chart type (e.g., `'line'`, `'bar'`, `'pie'`).
         * @prop {ChartData} modelValue - Chart.js data object (used with `v-model`).
         * @prop {ChartOptions} [options] - Optional Chart.js configuration object.
         * @prop {boolean} [visible=true] - Whether the chart is visible.
         * @prop {number} [loadDelay=500] - (ms) Delay between destroy and re-mount on reload. Prevents plugin/DOM race-conditions.
         *    Can be changed at runtime via `chartInstance.setLoadDelay()`.
         *
         * ---
         *
         * ### Events
         * @event mounted - Emitted when the chart instance is initialized.
         * @event responsive-change - Emitted when responsive class changes due to device detection.
         */
        HChart: typeof HChart;
        /**
         * Hisonvue custom drawer component.
         *
         * `HDrawer` renders a fixed-position sliding panel attached to one edge of the viewport
         * (top, bottom, left, or right). It supports edge-specific animations, configurable
         * width/height, optional overlay, swipe-to-close gestures, and full runtime control via
         * `HDrawerMethods` (open/close, position, resize with animation, etc.).
         *
         * ---
         *
         * ### 🎯 Features
         * - Edge anchoring via `position` (`'top'`, `'bottom'`, `'left'`, `'right'`)
         * - Default sizing per edge:
         *   - Top/Bottom: full width (`100vw`), dynamic height
         *   - Left/Right: full height (`100vh`), dynamic width
         * - Built-in enter/leave animations depending on edge (slide-in/out from that side)
         * - Overlay/backdrop with configurable visibility and click-to-close behavior
         * - Optional close button (`closeButtonVisible`) with slot customization
         * - Swipe-to-close support (touch/pointer gestures by edge direction)
         * - Runtime registration using unique `id`, accessible via `hison.component.getDrawer(id)`
         * - Scroll lock with **reference counting** (safe for multiple drawers)
         * - Responsive class extraction (`hison-col-*`, `hison-size-*`, `hison-color-*`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HDrawer
         *   id="drawer01"
         *   class="hison-col-12"
         *   :visible="false"
         *   :border="true"
         *   :zIndex="1100"
         *   position="left"
         *   :width="300"
         *   :height="null"
         *   :closeButtonVisible="true"
         *   closeButtonText="X"
         *   closeButtonTitle="Close"
         *   :swipeClose="true"
         *   :closeClickOverlay="true"
         *   :showOverlay="true"
         *   :overlayStyle="{ background: 'rgba(0,0,0,0.35)' }"
         *   :scrollLock="true"
         *   enterAnimationClass="hison-drawer-enter-left"
         *   leaveAnimationClass="hison-drawer-leave-left"
         *   @open="onOpen"
         *   @close="onClose"
         *   @responsive-change="onDevice"
         * >
         *   <template #default>
         *     drawer content...
         *   </template>
         *
         *   <!-- replace whole close button -->
         *   <template #close-button="{ onClick, text, title }">
         *     <MyCustomClose :label="text" :title="title" @click="onClick" />
         *   </template>
         *
         *   <!-- or override parts only -->
         *   <template #close-icon>❌</template>
         *   <template #close-label>Close</template>
         * </HDrawer>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the drawer programmatically using `hison.component.getDrawer(id)`:
         *
         * ```ts
         * const drawer = hison.component.getDrawer('drawer01');
         * drawer.open();
         * drawer.setPosition('right');
         * drawer.setWidth(400, true);   // animate width change
         * drawer.setZIndex(1500);
         * ```
         *
         * ---
         *
         * ### ⚠️ Notes on z-index, sizing & gestures
         * - `zIndex` controls the wrapper’s stacking order; the overlay is always rendered at `zIndex - 1`.
         * - Width/Height props may be animated (`setWidth`/`setHeight`) for smooth expansion/collapse.
         * - Swipe gestures close the drawer only in the **opposite edge direction** (e.g. swipe down on top drawer).
         * - Scroll locking is **reference-counted**; closing one drawer will not unlock the page if others remain open.
         *
         * ---
         *
         * @prop {string} id - Unique drawer identifier for method registration (`hison.component.getDrawer(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive/custom classes (`hison-col-*`, etc.).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the drawer container.
         * @prop {boolean} [visible=false] - Initial visibility (subsequent control via methods only).
         *
         * @prop {boolean} [border=true] - Whether the drawer has border (box-shadow).
         *
         * @prop {number} [zIndex=1100] - Stacking context for the drawer; overlay uses `zIndex - 1`.
         * @prop {('top'|'bottom'|'left'|'right')} [position='bottom'] - Edge position where the drawer is anchored.
         *
         * @prop {number|null} [width=null] - Drawer width in pixels (optional; defaults vary by edge).
         * @prop {number|null} [height=null] - Drawer height in pixels (optional; defaults vary by edge).
         *
         * @prop {boolean} [closeButtonVisible=true] - Close button visibility.
         * @prop {string} [closeButtonText='X'] - Close button label.
         * @prop {string} [closeButtonTitle='close'] - Close button title attribute.
         *
         * @prop {boolean} [swipeClose=true] - Whether swipe-to-close gestures are enabled.
         *
         * @prop {boolean} [closeClickOverlay=true] - Whether clicking the overlay closes the drawer.
         * @prop {boolean} [showOverlay=true] - Whether the overlay (backdrop) is shown.
         * @prop {string | CSSProperties | CSSProperties[]} [overlayStyle] - Inline style for the overlay (merged with computed `zIndex - 1`).
         *
         * @prop {boolean} [scrollLock=true] - Whether to lock page scroll while the drawer is visible (reference-counted).
         *
         * @prop {string} [enterAnimationClass] - CSS class for enter animation.
         * @prop {string} [leaveAnimationClass] - CSS class for leave animation.
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HDrawerMethods` instance for runtime control.
         * @event open - Emitted when the drawer opens (after entering animation starts).
         * @event close - Emitted when the drawer closes (after leaving animation finishes).
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HDrawer: typeof HDrawer;
        /**
         * Hisonvue custom dropdown component.
         *
         * `HDropdown` is a lightweight select/dropdown that shares the tone and style of `HInput`.
         * It supports toggling (open/close), option selection, trigger modes (click/hover), text alignment,
         * and edit states. Additionally, it provides the **same animation system as HAccordion**
         * (0fr↔1fr CSS Grid transition + caret rotation).
         * The caret UI can be replaced via slot, and animations can be controlled per instance.
         *
         * ---
         *
         * ### 🎯 Features
         * - Clean, input-like look (no border; themed shadow tint)
         * - Trigger modes: **click** or **hover**
         * - Edit states:
         *   - **editable**: fully interactive
         *   - **readonly**: looks like text (caret/menu hidden), cannot open
         *   - **disable**: dimmed, inactive
         * - Toggle/menu **text alignment** (`left` / `center` / `right`)
         * - **Accordion-style expand/collapse animation** using CSS Grid `grid-template-rows: 0fr ↔ 1fr`
         * - **Caret rotation animation**: rotates 180° when open
         * - **Animation control**: `animate`, `duration`, `easing` (applied via CSS vars `--hdd-duration`, `--hdd-easing`)
         * - Internal scrollable **maxHeight** support
         * - Runtime API: `hison.component.getDropdown(id)`
         * - Custom caret via `<slot name="caret">`
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HDropdown
         *   id="country"
         *   :modelValue="{ value: 'KR', options: [
         *     { label: 'Korea', value: 'KR' },
         *     { label: 'Japan', value: 'JP' }
         *   ]}"
         *   placeholder="Select country"
         *   trigger="click"
         *   :maxHeight="240"
         *   :animate="true"
         *   :duration="500"
         *   easing="ease"
         * />
         * ```
         *
         * #### Custom caret
         * ```vue
         * <HDropdown :modelValue="model">
         *   <template #caret>
         *     <svg width="12" height="12" viewBox="0 0 24 24" aria-hidden="true">
         *       <path d="M7 10l5 5 5-5H7z" />
         *     </svg>
         *   </template>
         * </HDropdown>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * ```ts
         * const dd = hison.component.getDropdown('country')
         * dd.open()
         * dd.setOptions([{ label: 'Korea', value: 'KR' }])
         * dd.setValue('KR')
         * dd.setEditMode('readonly')
         * dd.setTextAlign('center')
         * dd.setCloseOnSelect(false)
         * dd.setMaxHeight(180)
         * // Animation control (same as Accordion)
         * dd.setAnimate(true)
         * dd.setDuration(500)
         * dd.setEasing('ease-in-out')
         * ```
         *
         * ---
         *
         * @slot caret Override the toggle caret. Defaults to ▾ if not provided.
         *
         * @prop {string} id - Unique dropdown identifier. Accessible at runtime via `hison.component.getDropdown(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string(s). Supports the `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the root container.
         * @prop {string | CSSProperties | CSSProperties[]} [toggleStyle] - Inline style for the toggle area.
         * @prop {string | CSSProperties | CSSProperties[]} [menuStyle] - Inline style for the menu container.
         * @prop {string | CSSProperties | CSSProperties[]} [itemStyle] - Inline style for each menu item.
         *
         * @prop {boolean} [visible=true] - Whether the dropdown is visible.
         * @prop {('editable' | 'disable' | 'readonly')} [editMode='editable'] - Edit state.
         * @prop {string} [placeholder=''] - Placeholder text shown when no value is selected.
         * @prop {('click'|'hover')} [trigger='click'] - Defines how the menu opens.
         *
         * @prop {HDropdownModel} modelValue - v-model object `{ value: any, options: HDropdownOption[] }`.
         * @prop {number} [maxHeight=240] - Maximum menu height (px). Overflow is scrollable.
         * @prop {boolean} [closeOnSelect=true] - Whether to close the menu after selecting an option.
         * @prop {('left'|'center'|'right')} [textAlign='left'] - Text alignment for both toggle and menu.
         * @prop {number} [zIndex=1050] - Stacking context for the dropdown menu.
         *
         * @prop {boolean} [animate=true] - Enable expand/collapse animation (CSS Grid 0fr↔1fr & caret rotation).
         * @prop {number}  [duration=500] - Animation duration in ms. Reflected in CSS var `--hdd-duration`.
         * @prop {string}  [easing='ease'] - CSS timing function. Reflected in CSS var `--hdd-easing`.
         *
         * ---
         *
         * @event mounted - Fired on mount. `(HDropdownMethods)`
         * @event responsive-change - Fired on device breakpoint change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         * @event update:modelValue - Fired when the selection changes. `(HDropdownModel)`
         *
         * @event open - Fired when the menu opens. `(Event|null, HDropdownMethods)`
         * @event close - Fired when the menu closes. `(Event|null, HDropdownMethods)`
         * @event toggle-click - Fired when toggle is clicked or activated via keyboard. `(MouseEvent|KeyboardEvent, HDropdownMethods)`
         * @event item-click - Fired when a menu item is clicked. `(MouseEvent, HDropdownMethods, HDropdownOption)`
         * @event change - Fired after the selection changes. `(oldValue: any, newValue: any, HDropdownMethods)`
         *
         * ---
         *
         * #### ♿ Accessibility
         * - Toggle: `role="combobox"`, `aria-expanded`, `aria-disabled`
         * - Menu: `role="listbox"`, `aria-activedescendant`, `aria-hidden`
         */
        HDropdown: typeof HDropdown;
        /**
         * Hisonvue file attachment component.
         *
         * `HFileset` is a fully reactive, feature-rich file upload and management UI for Vue 3.
         * Designed for business and enterprise projects, it supports multi-file handling, drag-and-drop,
         * advanced validation, and complete runtime API integration.
         * Provides a highly customizable interface with support for custom icons, buttons, and download logic.
         * Integrates tightly with `hison.vue.getInput(id)` for programmatic control.
         *
         * ---
         *
         * ### 🎯 Features
         * - **Multi-file upload** (or single file mode) with preview, removal, and preloaded value sync.
         * - **Drag-and-drop** support with visual feedback and restriction controls.
         * - **Per-file & total file size limits**, with rejection and event/callback notification.
         * - **Allowed/disallowed types** by MIME or extension, with callbacks and slot customization.
         * - **Customizable UI**: Add/remove button labels, placeholder, and slot-based icon/button overrides.
         * - **Responsive layout**: Fully stylable using hisonvue's responsive class utilities.
         * - **Runtime API**: Access and control everything at runtime using `HFilesetMethods`.
         * - **Custom download**: Secure and extend download via custom handler.
         * - **Integration**: Programmatic access via `hison.vue.getInput(id)`.
         * - **Add button control**: Built-in add button id is `hison_fileset_add_button_${id}` — get it via
         *   `hison.component.getButton(\`hison_fileset_add_button_${id}\`)`.
         * - **Full slot support**: Custom icons, add/remove button, even drag-drop interaction.
         *
         * ---
         *
         * ### ⚙️ Usage Example
         * ```vue
         * <HFileset
         *   id="fileset"
         *   class="hison-col-12 hison-size-l-mb hison-size-s-pc hison-pos-right hison-color-primary-mb hison-color-success-pc"
         *   v-model="files"
         *   :multiCols="true"
         *   :placeholder="'No files.'"
         *   :addButtonText="'UPLOAD'"
         *   :removeButtonText="'DELETE'"
         *   :enableDrop="true"
         *   :visible="true"
         *   :editMode="EditMode.editable"
         *   :multiple="true"
         *   :maxFileCount="3"
         *   :allowedTypes="['.pdf', '.jpg', '.png']"
         *   style="height: 200px; margin-bottom: 5px;"
         * >
         *   <template #file-icon="{ file }">
         *     <span v-if="file.extension === 'pdf'">📕</span>
         *     <span v-else-if="file.extension === 'jpg'">🖼️</span>
         *     <span v-else>📄</span>
         *   </template>
         *   <template #add-button="{ add, disable }">
         *     <span>📁 Add files</span>
         *   </template>
         * </HFileset>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime API Usage
         * ```ts
         * const fileset = hison.vue.getInput('fileset')
         * fileset.setEditMode('readonly')
         * fileset.setAllowedTypes(['.pdf'])
         * fileset.setMaxFileCount(2)
         * fileset.setValue([{ fileName: 'final.pdf', ... }])
         * fileset.focus()
         *
         * // Access the built-in add button if needed:
         * const addBtn = hison.component.getButton(`hison_fileset_add_button_${'fileset'}`)
         * addBtn.setDisable(true)
         * ```
         *
         * ---
         *
         * @prop {string} [id] Unique identifier for the file set. Enables runtime access via `hison.vue.getInput(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] Additional class string. Supports responsive classes.
         * @prop {string | CSSProperties | CSSProperties[]} [style] Inline CSS style for the container.
         * @prop {boolean} [visible=true] Controls component visibility.
         * @prop {('editable' | 'disable' | 'readonly')} [editMode='editable'] Edit state.
         * @prop {AttachedFileItem[]} [modelValue=[]] File list (preloaded or new). Controlled via `v-model`.
         * @prop {string} [attId=''] Group ID for backend file association.
         * @prop {string} [addButtonText='Add'] Label for the add/upload button.
         * @prop {string} [removeButtonText='x'] Label for the remove button.
         * @prop {string} [placeholder='There are no files.'] Message shown when file list is empty.
         * @prop {boolean} [enableDrop=true] Enables drag-and-drop file upload area.
         * @prop {(file: AttachedFileItem) => void} [downloadHandler] Custom download handler.
         * @prop {boolean} [multiCols=false] Display files in multiple columns.
         * @prop {boolean} [multiple=true] Allow multiple file selection/upload.
         * @prop {boolean} [buttonOnly=false] When true, renders only the upload/add button (no wrapper, no file list UI).
         * @prop {string | string[]} [allowedTypes] Allowed MIME types or extensions.
         * @prop {string | string[]} [disallowedTypes] Disallowed MIME types or extensions. Applied even when `allowedTypes` is set. If a type matches both, it will be rejected.
         * @prop {number} [maxFileSize=Infinity] Maximum file size per file (bytes).
         * @prop {number} [maxTotalFileSize=Infinity] Maximum total size for all files (bytes).
         * @prop {number} [maxFileCount=0] Maximum number of files allowed (0: unlimited).
         * @prop {(file: File, allowed: string[]|null, disallowed: string[]|null) => void} [onDisallowedType] Callback when file type is rejected.
         * @prop {(file: File, size: number, max: number) => void} [onMaxFileSizeExceeded] Callback when a file is too large.
         * @prop {(file: File, total: number, max: number) => void} [onMaxTotalSizeExceeded] Callback when total file size limit is exceeded.
         *
         * ---
         *
         * @event mounted Emitted on mount. Arguments: `(methods: HFilesetMethods)`.
         * @event responsive-change Emitted on device class change. Arguments: `(device: string)`.
         * @event update:modelValue Emitted when the internal file list changes. Arguments: `(list: AttachedFileItem[])`.
         * @event add Emitted when files are added. Arguments: `(added: AttachedFileItem[], methods: HFilesetMethods)`.
         * @event remove Emitted when a file is removed/marked deleted. Arguments: `(file: AttachedFileItem, index: number, methods: HFilesetMethods)`.
         * @event change Emitted whenever the file list is changed. Arguments: `(list: AttachedFileItem[], methods: HFilesetMethods)`.
         * @event download Emitted when a download is triggered. Arguments: `(file: AttachedFileItem, methods: HFilesetMethods)`.
         * @event focus Emitted when the add button receives focus. Arguments: `(methods: HFilesetMethods)`.
         * @event blur Emitted when the add button loses focus. Arguments: `(methods: HFilesetMethods)`.
         *
         * ---
         *
         * @slot file-icon
         * Custom icon or markup to be shown before each file name. Receives the `file` object as a scoped prop.
         *
         * @example
         * <HFileset v-model="files">
         *   <template #file-icon="{ file }">
         *     <span v-if="file.extension === 'pdf'">📕</span>
         *     <span v-else-if="file.extension === 'jpg'">🖼️</span>
         *     <span v-else>📄</span>
         *   </template>
         * </HFileset>
         *
         * @slot remove-button
         * Custom slot for rendering the remove button beside each file (overrides default).
         * Scoped props:
         *   - `file: AttachedFileItem`
         *   - `index: number`
         *   - `remove: () => void`
         *   - `disable: boolean`
         *
         * @example
         * <HFileset v-model="files">
         *   <template #remove-button="{ file, index, remove, disable }">
         *     <span class="custom-remove-btn" :disabled="disable" @click="remove" style="cursor: pointer;">❌</span>
         *   </template>
         * </HFileset>
         *
         * @slot add-button
         * Custom slot for the contents **inside** the add button (`HButton`). Only replaces the button's content, not the button itself.
         * Scoped props:
         *   - `add: () => void` (opens file dialog)
         *   - `disable: boolean`
         *
         * @example
         * <HFileset v-model="files">
         *   <template #add-button="{ add, disable }">
         *     <span>📁 Select Files</span>
         *   </template>
         * </HFileset>
         */
        HFileset: typeof HFileset;
        /**
         * Hisonvue gap/spacing component.
         *
         * `HGap` is a lightweight utility component for adding vertical or horizontal spacing in layouts.
         * It supports empty space, divider lines (`horizontal` / `vertical`), and full theme integration.
         * Runtime methods let you toggle visibility, background, border, and line style dynamically.
         *
         * ---
         *
         * ### 🎯 Features
         * - Responsive height sizing via `hison-size-*` classes (`xs`,`s`, `m`, `l`, `xl`)
         *   (matches the height scale used by `HLabel` / `HButton`)
         * - Flexible width control via `hison-col-*` grid system (`1`–`12`, default: `12`)
         * - **Line rendering options:**
         *   - `line="none"` → empty space only
         *   - `line="horizontal"` → horizontal divider line
         *   - `line="vertical"` → vertical divider line
         * - **Customizable line appearance:**
         *   - `lineStyle` (solid, dashed, dotted, double, etc.)
         *   - `lineWidth` (number in px or string unit)
         *   - `lineColor` (CSS color string or theme auto if omitted)
         * - Theme-aware colors via `hison-color-*` classes (`primary`, `muted`, `info`, `success`, `danger`, `warning`)
         * - Optional border (subtle box-shadow) and background (`filled`, `empty`, `transparent`)
         * - Dynamic runtime control via `hison.component.getGap(id)`
         * - Device-aware responsive reload (`@responsive-change`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <!-- Simple empty gap -->
         * <HGap id="gap01" class="hison-col-12 hison-size-m" />
         *
         * <!-- Horizontal divider with theme color -->
         * <HGap
         *   id="gap02"
         *   class="hison-col-12 hison-color-primary"
         *   line="horizontal"
         *   :line-width="2"
         *   line-style="dashed"
         * />
         *
         * <!-- Vertical divider inside a row -->
         * <div class="hison-layout">
         *   <HButton text="Left" />
         *   <HGap id="gap03" class="hison-col-1 hison-color-muted" line="vertical" />
         *   <HButton text="Right" />
         * </div>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getGap(id)` to retrieve control methods at runtime:
         *
         * ```ts
         * const gap = hison.component.getGap('gap02')
         * gap.setLine('vertical')          // switch to vertical divider
         * gap.setLineStyle('dotted')       // change line style
         * gap.setLineWidth(3)              // set thickness to 3px
         * gap.setLineColor('#ff0000')      // set custom color
         * gap.setBackgroundType('filled')  // apply background fill
         * gap.setBorder(true)              // enable border (box-shadow)
         * gap.setVisible(false)            // hide gap entirely
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique gap identifier. Enables runtime access via `hison.component.getGap(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports responsive system (`hison-size-*`, `hison-color-*`, `hison-col-*`).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style applied to root gap element.
         * @prop {boolean} [visible] - Whether the gap is shown (`true` by default).
         * @prop {boolean} [border] - Whether to show border (box-shadow). Default: `false`.
         * @prop {('filled'|'empty'|'transparent')} [backgroundType] - Background style. `'empty'` (default), `'filled'`, or `'transparent'`.
         * @prop {('none'|'horizontal'|'vertical')} [line] - Drawing rule. `'none'` (default), `'horizontal'`, `'vertical'`.
         * @prop {HGapLineStyleValue} [lineStyle] - CSS border style for the line. `'solid'` (default).
         * @prop {number|string} [lineWidth] - Thickness of the line. Number → px, String → CSS unit. Default: `1`.
         * @prop {string} [lineColor] - CSS color for the line. Empty string (`''`) uses theme auto color.
         *
         * ---
         *
         * @slot default - Not used; gap does not render slot content (reserved for future extensions).
         *
         * ---
         *
         * @event mounted - Emitted after mounting. Passes `HGapMethods` instance.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HGap: typeof HGap;
        /**
         * Hisonvue custom grid component.
         *
         * `HGrid` is a flexible and lightweight table/grid component powered by `vanillagrid2`.
         * It supports full customization of grid layout, styles, interactions, and advanced event handling.
         *
         * ---
         *
         * ### 🧩 Features
         * - Typed column definitions via `HGridColumn[]`
         * - Editable cells, sortable/filterable columns, and selection policies
         * - Support for undo/redo, fixed rows/columns, alternate row colors
         * - Detailed control over all user interactions (click, edit, copy/paste, etc.)
         * - Custom styling per region (header/body/footer/editor)
         * - SSR-safe grid mounting
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HGrid
         *   id="grid01"
         *   :columns="columns"
         *   :height="'200px'"
         *   :rownumVisible="'false'"
         *   :statusVisible="'false'"
         *   :visible="'true'"
         *   :activeRow="onActiveRow"
         *   :activeCol="onActiveCol"
         *   color="black"
         *   @mounted="onMounted"
         * />
         * ```
         *
         * ---
         *
         * ### 🛠 Data Handling
         * Unlike other components like `HNote`, `HGrid` **does not use `v-model`**.
         * To control the grid’s data, use the `hison.component.getGrid(id)` method to retrieve the `GridMethods` instance.
         *
         * You can then call methods such as `load()`, `getRowData()`, `setCellValue()` and more to control the grid programmatically.
         *
         * ```ts
         * const grid = hison.component.getGrid('grid01');
         * grid.load([
         *   { col1: 'A', col2: 'B', col3: 'C' },
         *   { col1: 'X', col2: 'Y', col3: 'Z' },
         * ]);
         * ```
         *
         * ---
         *
         * @prop {string} id - Required grid instance identifier (must be unique).
         * @prop {HGridColumn[]} columns - Column definition array. Each item defines a column’s id, type, header, and more.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         *
         * @prop {string} [name] - Optional grid name. Defaults to `id` if omitted.
         * @prop {Boolean} [locked] - If true, disables editing on all cells.
         * @prop {Boolean} [lockedColor] - Show background color for locked cells.
         * @prop {Boolean} [resizable] - Whether column widths can be resized by mouse.
         * @prop {Boolean} [redoable] - Enable undo/redo functionality.
         * @prop {Number} [redoCount] - Number of undo/redo history steps to keep.
         * @prop {Boolean} [visible] - Show/hide the grid (`display: none`).
         * @prop {Boolean} [headerVisible] - Show/hide the header.
         * @prop {Boolean} [rownumVisible] - Show/hide the row number column.
         * @prop {string} [rownumSize] - Width of the row number column.
         * @prop {Boolean} [rownumLockedColor] - Show locked color on rownum column.
         * @prop {Boolean} [statusVisible] - Show/hide status column.
         * @prop {Boolean} [statusLockedColor] - Show locked color on status column.
         * @prop {('single' | 'range' | 'none')} [selectionPolicy] - User selection behavior: `range`, `single`, or `none`.
         * @prop {string} [nullValue] - Display value when cell value is `null`.
         * @prop {('yyyy-mm-dd' | 'yyyy/mm/dd' | 'yyyy. mm. dd' | 'yyyymmdd' | 'mm-dd-yyyy' | 'mm/dd/yyyy' | 'mm. dd. yyyy' | 'mmddyyyy' | 'dd-mm-yyyy' | 'dd/mm/yyyy' | 'dd. mm. yyyy' | 'ddmmyyyy')} [dateFormat] - Global date format for date-type columns.
         * @prop {('yyyymm' | 'yyyy-mm' | 'yyyy/mm' | 'yyyy. mm' | 'mmyyyy' | 'mm-yyyy' | 'mm/yyyy' | 'mm. yyyy')} [monthFormat] - Global month format for month-type columns.
         * @prop {Boolean} [alterRow] - Use alternate row background colors.
         * @prop {Number} [frozenColCount] - Number of fixed/frozen columns (including hidden ones).
         * @prop {Number} [frozenRowCount] - Number of fixed/frozen rows.
         * @prop {Boolean} [sortable] - Enable column sorting.
         * @prop {Boolean} [filterable] - Enable column filtering.
         * @prop {Boolean} [allCheckable] - Double-click header to toggle all checkboxes.
         * @prop {string} [checkedValue] - Value representing a checked checkbox.
         * @prop {string} [uncheckedValue] - Value representing an unchecked checkbox.
         *
         * @prop {string} [width] - Grid width (CSS text).
         * @prop {string} [height] - Grid height (CSS text).
         * @prop {string} [margin] - Grid margin (CSS text).
         * @prop {string} [padding] - Grid padding (CSS text).
         * @prop {Number} [sizeLevel] - Relative size of the grid (e.g. 5 is standard).
         * @prop {('top' | 'center' | 'bottom')} [verticalAlign] - Default vertical alignment: `top`, `center`, `bottom`.
         * @prop {string} [cellFontSize] - Cell font size (CSS px).
         * @prop {string} [cellMinHeight] - Cell minimum height (CSS px).
         * @prop {Number} [horizenBorderSize] - Horizontal border thickness (px).
         * @prop {Number} [verticalBorderSize] - Vertical border thickness (px).
         * @prop {string} [gridFontFamily] - Font family for cells.
         * @prop {string} [editorFontFamily] - Font family for the editor input.
         * @prop {string} [overflowWrap] - CSS overflow-wrap for cells.
         * @prop {string} [wordBreak] - CSS word-break for cells.
         * @prop {string} [whiteSpace] - CSS white-space for cells.
         * @prop {Boolean} [linkHasUnderLine] - Whether to underline link cells.
         * @prop {Boolean} [invertColor] - Enable dark mode.
         * @prop {ColorSet | string} [color] - Main theme color (e.g., `"primary"` or `"#ff0000"`).
         *
         * @prop {string} [gridBorderColor] - Grid outer border color.
         * @prop {string} [headerCellBackColor] - Header background.
         * @prop {string} [headerCellBorderColor] - Header border.
         * @prop {string} [headerCellFontColor] - Header font color.
         * @prop {string} [footerCellBackColor] - Footer background.
         * @prop {string} [footerCellBorderColor] - Footer border.
         * @prop {string} [footerCellFontColor] - Footer font color.
         * @prop {string} [bodyBackColor] - Grid body background.
         * @prop {string} [bodyCellBackColor] - Grid cell background.
         * @prop {string} [bodyCellBorderColor] - Grid cell border.
         * @prop {string} [bodyCellFontColor] - Grid cell font color.
         * @prop {string} [editorBackColor] - Editor background.
         * @prop {string} [editorFontColor] - Editor font color.
         * @prop {string} [selectCellBackColor] - Selected cell background.
         * @prop {string} [selectCellFontColor] - Selected cell font color.
         * @prop {string} [selectColBackColor] - Selected column header background.
         * @prop {string} [selectColFontColor] - Selected column header font.
         * @prop {string} [selectRowBackColor] - Selected row background.
         * @prop {string} [selectRowFontColor] - Selected row font color.
         * @prop {string} [mouseoverCellBackColor] - Hovered cell background.
         * @prop {string} [mouseoverCellFontColor] - Hovered cell font.
         * @prop {string} [lockCellBackColor] - Locked cell background.
         * @prop {string} [lockCellFontColor] - Locked cell font.
         * @prop {string} [alterRowBackColor] - Alternate row background.
         * @prop {string} [alterRowFontColor] - Alternate row font.
         * @prop {string} [buttonFontColor] - Button cell font color.
         * @prop {string} [buttonBorderColor] - Button cell border.
         * @prop {string} [buttonBackColor] - Button cell background.
         * @prop {string} [buttonHoverFontColor] - Button hover font.
         * @prop {string} [buttonHoverBackColor] - Button hover background.
         * @prop {string} [buttonActiveFontColor] - Button active font.
         * @prop {string} [buttonActiveBackColor] - Button active background.
         * @prop {string} [linkFontColor] - Link font color.
         * @prop {string} [linkHoverFontColor] - Link hover font color.
         * @prop {string} [linkActiveFontColor] - Link active font color.
         * @prop {string} [linkVisitedFontColor] - Link visited font color.
         * @prop {string} [linkFocusFontColor] - Link focus font color.
         *
         * @event {(grid: GridMethods) => void} [mounted] - Emits the grid instance after mounting.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         * `gridEventProps` supported.
         * @prop {(row, colId) => boolean} [activeCell] - Called to determine whether a cell is active.
         * @prop {(startRow, startColId, endRow, endColId) => boolean} [activeCells] - Active range.
         * @prop {(row) => boolean} [activeRow] - Called to determine if a row is active.
         * @prop {(startRow, endRow) => boolean} [activeRows] - Active rows range.
         * @prop {(colId) => boolean} [activeCol] - Called to determine if a column is active.
         * @prop {(startColId, endColId) => boolean} [activeCols] - Active columns range.
         * @prop {(row, colId, oldValue, newValue) => boolean} [beforeChange] - Called before cell value changes.
         * @prop {(row, colId, oldValue, newValue) => void} [afterChange] - Called after cell value changes.
         * @prop {(row, colId) => boolean} [beforeClickCell] - Before a cell is clicked.
         * @prop {(row, colId) => void} [afterClickCell] - After a cell is clicked.
         * @prop {(row, colId, selectNode) => boolean} [clickSelect] - Called when a select dropdown is clicked.
         * @prop {(row, colId, checkboxNode) => boolean} [clickCheckbox] - Checkbox cell click handler.
         * @prop {(row, colId, buttonNode) => boolean} [clickButton] - Button cell click handler.
         * @prop {(row, colId, linkNode) => boolean} [clickLink] - Link cell click handler.
         * @prop {(row, colId) => boolean} [beforeDblClickCell] - Before double click on cell.
         * @prop {(row, colId) => void} [afterDblClickCell] - After double click on cell.
         * @prop {(row, colId) => boolean} [beforeClickHeader] - Before header click.
         * @prop {(row, colId) => void} [afterClickHeader] - After header click.
         * @prop {(row, colId) => boolean} [beforeDblClickHeader] - Before double click on header.
         * @prop {(row, colId) => void} [afterDblClickHeader] - After double click on header.
         * @prop {(row, colId, editorNode) => boolean} [beforeEditEnter] - Before entering cell edit.
         * @prop {(row, colId, editorNode) => void} [afterEditEnter] - After entering cell edit.
         * @prop {(row, colId, oldValue, newValue) => boolean} [editEnding] - Before edit completes.
         * @prop {(row, colId, filterNode) => boolean} [clickFilter] - Filter click handler.
         * @prop {(row, colId, oldValue, newValue) => boolean} [chooseFilter] - Filter value chosen handler.
         * @prop {(startRow, startColId, clipboardText) => boolean} [paste] - Paste event handler.
         * @prop {(startRow, startColId, endRow, endColId, copyText) => boolean} [copy] - Copy event handler.
         * @prop {(colId) => boolean} [resize] - Called during column resize.
         * @prop {(event: KeyboardEvent) => boolean} [keydownEditor] - Keydown in editor input.
         * @prop {(event: InputEvent) => boolean} [inputEditor] - Input event in editor input.
         * @prop {(event: KeyboardEvent) => boolean} [keydownGrid] - Keydown at grid level.
         */
        HGrid: typeof HGrid;
        /**
         * Hisonvue single image upload & preview component.
         *
         * `HImagebox` provides a complete single-image upload solution with preview, drag-and-drop, and runtime API for business apps.
         * It supports both preloaded (server) images and newly uploaded files, with validation, placeholder, and slot customization.
         * Integrates with `hison.vue.getInput(id)` for programmatic control and fully supports dynamic runtime usage.
         *
         * ---
         *
         * ### 🎯 Features
         * - **Single image upload** with preview and deletion (both soft and hard delete supported)
         * - **Drag-and-drop** support (can be enabled/disabled via `enableDrop`)
         * - **Type/extension and file size validation** with user callbacks for errors
         * - **Fully customizable UI**: add/remove button text, placeholder, and slot-based button/empty state override
         * - **Responsive layout**: fully stylable with hisonvue’s responsive class system
         * - **Runtime API**: Access and control via `HImageboxMethods` instance
         * - **Server file (soft-delete) vs. new upload (removal)**: handles both
         * - **DataModel integration** and seamless v-model syncing
         * - **Slot support**: `empty`, `add-button`, `remove-button`
         * - **Control buttons**:
         *   - Add button id: `hison_imagebox_add_button_${id}` → access with
         *     `hison.component.getButton(\`hison_imagebox_add_button_${id}\`)`
         *   - Remove button id: `hison_imagebox_remove_button_${id}` → access with
         *     `hison.component.getButton(\`hison_imagebox_remove_button_${id}\`)`
         *
         * ---
         *
         * ### ⚙️ Usage Example
         * ```vue
         * <HImagebox
         *   id="profileImage"
         *   class="hison-col-6-pc hison-col-12-mb hison-size-l-mb"
         *   v-model="image"
         *   :attId="'P001'"
         *   :addButtonText="'UPLOAD'"
         *   :removeButtonText="'DELETE'"
         *   :placeholder="'Drag or upload your image.'"
         *   :enableDrop="true"
         *   :visible="true"
         *   :editMode="EditMode.editable"
         *   :allowedTypes="['.jpg', '.png', 'image/*']"
         *   :imgStyle="{ borderRadius: '12px', border: '1px solid #e0e0e0' }"
         *   style="height: 250px;"
         *   @add="onAdd"
         *   @remove="onRemove"
         * >
         *   <!-- Custom empty slot -->
         *   <template #empty>
         *     <div class="custom-empty">
         *       <span>Drag an image here or click 'Add'</span>
         *     </div>
         *   </template>
         *   <!-- Custom add button content -->
         *   <template #add-button="{ add }">
         *     <span><i class="fa fa-plus"></i> Add Image</span>
         *   </template>
         *   <!-- Custom remove button content -->
         *   <template #remove-button="{ remove }">
         *     <span><i class="fa fa-trash"></i> Delete</span>
         *   </template>
         * </HImagebox>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime API Usage
         * ```ts
         * const imagebox = hison.vue.getInput('profileImage')
         * imagebox.setEditMode('readonly')
         * imagebox.setAllowedTypes(['.jpg'])
         * imagebox.setMaxFileSize(1024 * 1024)
         * imagebox.setValue({ fileName: 'avatar.jpg', ... })
         * imagebox.focus()
         *
         * // Access control buttons if needed:
         * const addBtn = hison.component.getButton(`hison_imagebox_add_button_${'profileImage'}`)
         * const rmBtn  = hison.component.getButton(`hison_imagebox_remove_button_${'profileImage'}`)
         * addBtn.setDisable(true)
         * rmBtn.setDisable(true)
         * ```
         *
         * ---
         *
         * @prop {string} [id] Unique identifier for the image box. Enables runtime access via `hison.vue.getInput(id)`. Duplicate IDs will throw an error.
         * @prop {string | string[] | Record<string, boolean>} [class] Extra class string. Supports all hisonvue responsive, color, and size classes.
         * @prop {string | CSSProperties | CSSProperties[]} [style] Inline CSS style for the container.
         * @prop {string | CSSProperties | CSSProperties[]} [imgStyle] CSS style or string for the `<img>` element (image preview).
         * @prop {boolean} [visible=true] Controls component visibility.
         * @prop {('editable' | 'disable' | 'readonly')} [editMode='editable'] Edit mode: `'editable'`, `'readonly'`, or `'disable'`.
         * @prop {AttachedFileItem | null} [modelValue=null] The current image file object (preloaded or new). Controlled via `v-model`.
         * @prop {string} [attId=''] Group ID for backend image association.
         * @prop {string} [addButtonText='Add'] Label for the add/upload button (if not using the `add-button` slot).
         * @prop {string} [removeButtonText='Remove'] Label for the remove button (if not using the `remove-button` slot).
         * @prop {string} [modifyButtonText='Edit'] Text for the edit/modify button shown when an image already exists.
         * @prop {string} [placeholder='There is no image'] Message shown when no image is present (shows in the empty slot unless overridden).
         * @prop {boolean} [enableDrop=true] Enables drag-and-drop image upload area.
         * @prop {string | string[]} [allowedTypes] Allowed MIME types or extensions (array or comma-separated string).
         * @prop {string | string[]} [disallowedTypes] Disallowed MIME types or extensions (array or comma-separated string).
         * @prop {number} [maxFileSize=Infinity] Maximum file size (bytes) for the image. Files larger than this are rejected.
         * @prop {boolean} [border] - Whether to show border (box-shadow). Default: `false`.
         * @prop {(file: File, allowed: string[]|null, disallowed: string[]|null) => void} [onDisallowedType] Callback when file type/extension is not allowed.
         * @prop {(file: File, size: number, max: number) => void} [onMaxFileSizeExceeded] Callback when a file is too large.
         *
         * ---
         *
         * @event mounted Emitted on mount. Passes the `HImageboxMethods` instance.
         * @event responsive-change Emitted when device class changes (mobile/tablet/pc/wide).
         * @event update:modelValue Emitted when the image changes (add, remove, delete, etc).
         * @event add Emitted when an image is added. Arguments: `(file: AttachedFileItem, methods: HImageboxMethods)`
         * @event remove Emitted when an image is removed. Arguments: `(file: AttachedFileItem, methods: HImageboxMethods)`
         * @event change Emitted whenever the image is changed. Arguments: `(newValue: AttachedFileItem|null, methods: HImageboxMethods)`
         * @event focus Emitted when the add button or file input receives focus.
         * @event blur Emitted when the image box loses focus.
         * @event preview-click Emitted when the preview image (".preview-img") is clicked. Arguments: `({ event: MouseEvent, api: HImageboxMethods })`
         * @event preview-dblclick Emitted on double-click on the preview image. Arguments: `({ event: MouseEvent, api: HImageboxMethods })`
         * @event preview-contextmenu Emitted when the context menu is requested on the preview image. Arguments: `({ event: MouseEvent, api: HImageboxMethods })`
         * @event preview-pointerenter Emitted when a pointer enters the preview image (hover start). Arguments: `({ event: PointerEvent, api: HImageboxMethods })`
         * @event preview-pointerleave Emitted when a pointer leaves the preview image (hover end). Arguments: `({ event: PointerEvent, api: HImageboxMethods })`
         * @event preview-pointerdown Emitted on pointer down over the preview image. Arguments: `({ event: PointerEvent, api: HImageboxMethods })`
         * @event preview-pointerup Emitted on pointer up over the preview image. Arguments: `({ event: PointerEvent, api: HImageboxMethods })`
         *
         * ---
         *
         * @slot empty
         * Customizes the "no image" placeholder.
         * Default: placeholder text.
         *
         * @example
         * <HImagebox>
         *   <template #empty>
         *     <div style="color:#ccc;">📷 No Image Selected</div>
         *   </template>
         * </HImagebox>
         *
         * @slot add-button
         * Customizes the **inside** of the add button (`HButton`). Replaces only the button's content, not the button itself.
         * Scoped props:
         *   - `add: () => void` (opens file dialog)
         *
         * @example
         * <HImagebox>
         *   <template #add-button="{ add }">
         *     <span><i class="fa fa-plus"></i> Add Image</span>
         *   </template>
         * </HImagebox>
         *
         * @slot remove-button
         * Customizes the **inside** of the remove button (`HButton`). Replaces only the button's content, not the button itself.
         * Scoped props:
         *   - `remove: () => void` (removes the current image)
         *
         * @example
         * <HImagebox>
         *   <template #remove-button="{ remove }">
         *     <span><i class="fa fa-trash"></i> Delete</span>
         *   </template>
         * </HImagebox>
         *
         * @slot modify-button
         * Customizes the **inside** of the modify button (`HButton`) shown when an image already exists.
         * Replaces only the button's content, not the button itself.
         * Scoped props:
         *   - `modify: () => void` (opens file dialog to replace the current image)
         *
         * @example
         * <HImagebox>
         *   <template #modify-button="{ modify }">
         *     <span><i class="fa fa-pen"></i> Change</span>
         *   </template>
         * </HImagebox>
         */
        HImagebox: typeof HImagebox;
        /**
         * Hisonvue custom input component.
         *
         * `HInput` is a versatile and reactive input component that supports various HTML input types,
         * runtime state control, and full styling support. It features a dual-mode display (editable input or readonly span),
         * and provides complete integration with `hison` for runtime interaction.
         *
         * ---
         *
         * ### 🎯 Features
         * - Supports various `inputType` values:
         *   - **Text-based**: `'text'`, `'number'`, `'email'`, `'password'`, `'digit'`, `'mask'`
         *   - **Date/time**: `'date'`, `'month'`, `'time'`
         *   - **Visual/UI**: `'color'`, `'range'`, `'textarea'`
         *   - **Selection**: `'checkbox'`, `'radio'`, `'select'`
         * - Custom formatting via `format` (e.g., `#,##0.00`, date mask)
         * - Numeric constraints with `maxNumber`, `minNumber`, `roundNumber`
         * - Input length limits via `maxLength`, `maxByte`
         * - UI control via `editMode`, `visible`, `required`, and font styles
         * - Reactive span-text view when not in editing mode
         * - All DOM events emit full `HInputMethods` for runtime control
         * - Integrated with `hison.component.getInput(id)` for external control
         *
         * ---
         *
         * ### ⚙️ Basic Usage
         * ```vue
         * <HInput
         *   id="userStatus"
         *   inputType="select"
         *   :options="[
         *     { text: 'Active', value: 'A' },
         *     { text: 'Inactive', value: 'I' }
         *   ]"
         *   v-model="status"
         * />
         * ```
         *
         * ---
         *
         * ### 🔘 Radio Usage & Grouping (with `name`)
         * - For `inputType="radio"`, the HTML `name` attribute **defines the group**.
         * - `HInputGroup` aggregates radios by `name` and exposes/accepts values in the shape:
         *   ```ts
         *   { [name: string]: selectedRadioKey | null }
         *   ```
         *   where `selectedRadioKey` is the `dataKey` of the checked `HInput`
         *   (falls back to `id` when `dataKey` is omitted or empty).
         * - When the user checks a radio:
         *   - The radio’s own `v-model` becomes `true` (others in the same group become `false`).
         *   - The parent `HInputGroup` updates its mapping `{ [name]: dataKey | null }` (fallback to `id`).
         * - If there is **no initial value** (no `v-model` provided), radios/checkboxes default to:
         *   - `getValue() === false`
         *   - `getText() === uncheckedText`
         *
         * #### Example
         * ```vue
         * <HInputGroup id="prefForm" v-model="form">
         *   <HInput id="r1" inputType="radio" name="lang" :modelValue="true" />
         *   <HInput id="r2" inputType="radio" name="lang" />
         *   <HInput id="r3" inputType="radio" name="theme" />
         * </HInputGroup>
         * ```
         * - Group `lang` → `{ lang: "r1" }` (or the checked radio’s `dataKey` if provided)
         * - Group `theme` → `{ theme: null }` (none selected)
         *
         * #### Dynamic re-grouping
         * - Calling `setName('newGroup')` on a radio **moves** it to another group at runtime.
         * - `HInputGroup` re-registers the membership and preserves the radio’s checked state,
         *   updating its `{ [name]: dataKey | null }` mapping accordingly (fallback to `id`).
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * ```ts
         * const input = hison.component.getInput('userStatus')
         * input.setValue('A')
         * input.setVisible(true)
         * input.setEditMode('editable')
         *
         * // Radio: move r1 from "lang" to "locale"
         * const r1 = hison.component.getInput('r1')
         * r1.setName('locale')
         * ```
         *
         * ---
         *
         * ### 📛 About `id`, `name`, and `dataKey`
         * - `id` is applied to the **editable** input element and is used to access methods via
         *   `hison.component.getInput(id)`. If `name` is not provided, it **defaults to** `id`.
         * - `dataKey` is used by `HInputGroup` when extracting data (`getDataObject()` / `getDataModel()`).
         *   If `dataKey` is omitted or empty, it falls back to `id`.
         * - For the **readonly display** (span-text) that uses a hidden text input for layout consistency
         *   (i.e., for types other than `range`, `color`, `checkbox`, `radio`, `select`, `textarea`),
         *   the component renders:
         *   - `id="input_text_${id}"`
         *   - `name="input_text_${name}"`
         *   so you can reliably target the display node if needed.
         *
         * ---
         *
         * @prop {string} id - Unique input identifier. Enables runtime access via `hison.component.getInput(id)`.
         * @prop {string} [dataKey] - Data extraction key used by `HInputGroup`. Defaults to `id` when omitted/empty.
         * @prop {string} [name] - HTML `name` attribute. Defaults to `id`.
         *   For `inputType="radio"`, this acts as the **group key**. `HInputGroup` will expose/accept the current
         *   selection as `{ [name]: selectedRadioKey | null }`, where `selectedRadioKey` is the checked radio’s `dataKey`
         *   (fallback to `id`). When radios share the same `name`, only one can be `true`.
         *
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         * @prop {boolean} [visible=true] - Whether the input is shown.
         * @prop {any} [modelValue] - Bound value for the input. Controlled via `v-model`.
         * @prop {('text' | 'mask' | 'number' | 'digit' | 'date' | 'month' | 'time' | 'email' | 'password' | 'checkbox' | 'radio' | 'range' | 'color' | 'textarea' | 'select')} [inputType='text'] - Input type.
         * @prop {string} [format] - Format string for numeric, date, or masked values.
         * @prop {string} [nullText] - Text to show when value is empty in readonly mode.
         * @prop {String|Number} [maxNumber] - Maximum value for numeric input.
         * @prop {String|Number} [minNumber] - Minimum value for numeric input.
         * @prop {String|Number} [roundNumber] - Decimal rounding precision.
         * @prop {String|Number} [maxLength] - Max number of characters.
         * @prop {String|Number} [maxByte] - Max number of bytes (UTF-8).
         * @prop {string} [placeholder] - Placeholder shown in input when empty.
         * @prop {('editable' | 'disable' | 'readonly')} [editMode='editable'] - Edit state.
         * @prop {boolean} [required=false] - Whether the input is required.
         * @prop {boolean} [fontBold=false] - Whether span text is bold.
         * @prop {boolean} [fontItalic=false] - Whether span text is italic.
         * @prop {boolean} [fontThruline=false] - Whether span text is strikethrough.
         * @prop {boolean} [fontUnderline=false] - Whether span text is underlined.
         * @prop {string} [title] - Tooltip text (HTML `title` attribute).
         * @prop {{ text: string; value: any }[]} [options=[]] - Select items for `inputType='select'`.
         * @prop {boolean} [border=true] - Whether to show border (box-shadow).
         * @prop {string} [checkedText='Y'] - Display text for `true` value in checkbox/radio (span-text).
         * @prop {string} [uncheckedText='N'] - Display text for `false` value in checkbox/radio (span-text).
         * @prop {(value: any) => string} [inputTextdHandler] - Custom formatter for display text (span).
         * @prop {('default' | 'switch')} [toggleStyle='default'] - Visual style for `checkbox`/`radio`.
         *
         * ---
         *
         * @event mounted - Emitted on component mount. Passes `HInputMethods`.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         * @event update:modelValue - Emitted when the bound value changes.
         *
         * @event input - Emitted during input. `(Event, HInputMethods, value)`
         * @event change - Emitted on blur or checkbox/radio/select change. `(oldValue, newValue, HInputMethods)`
         * @event focus - Emitted on focus. `(FocusEvent, HInputMethods)`
         * @event blur - Emitted on blur. `(Event, HInputMethods)`
         *
         * @event click - Emitted on readonly span click. `(MouseEvent, HInputMethods)`
         * @event dblclick - Emitted on double-click. `(MouseEvent, HInputMethods)`
         * @event mousedown / mouseup / mouseenter / mouseleave / mouseover / mouseout / mousemove - Mouse events
         * @event pointerdown / pointerup / pointermove / pointerenter / pointerleave - Pointer events
         * @event touchstart / touchend / touchmove / touchcancel - Touchscreen events
         * @event keydown / keyup - Keyboard events
         * @event compositionstart / compositionupdate / compositionend - IME composition events
         * @event dragstart / dragend / drag / drop - Drag-and-drop events
         * @event copy / cut / paste - Clipboard events
         * @event wheel - Mouse wheel event
         * @event contextmenu - Right-click context menu event
         */
        HInput: typeof HInput;
        /**
         * Hisonvue grouped input controller.
         *
         * `HInputGroup` is a lightweight component that wraps multiple `HInput` components
         * and provides group-level runtime control such as loading data, resetting values,
         * validating required fields, and checking modification state.
         *
         * It is designed to manage structured form data such as `Record<string, any>` and `DataModel`,
         * and integrates with `hison.component.getInputGroup(id)` to expose runtime control methods like
         * `.load()`, `.clear()`, `.getDataObject()`, and more.
         *
         * ---
         *
         * ### 🎯 Features
         * - Automatically registers all child `<HInput>` components rendered inside its `<slot />`.
         * - Supports loading data from:
         *   - `Record<string, any>`
         *   - `InterfaceDataModel`
         * - Two-way binding with `v-model` for entire form data as `Record<string, any>`.
         * - Can reset all child inputs via `.clear()`.
         * - Tracks if any child `HInput` is modified via `.isModified()`.
         * - Applies or retrieves form-wide status (`C`, `R`, `U`, `D`) with `.getStatus()` and `.setStatus()`.
         * - Applies global edit mode to all child inputs (`editable`, `readonly`, `disable`).
         * - Supports required field validation with `.checkRequired()`.
         * - Full runtime methods available via `hison.component.getInputGroup(id)`.
         *
         * ---
         *
         * ### 🧩 About `id` and `dataKey`
         * - Every child `HInput` must have a unique **`id`**. This `id` is used for runtime access
         *   (e.g., `hison.component.getInput(id)`), focus control, and internal registration.
         * - For group-level data I/O (`v-model`, `getDataObject()`, `load()`, `setDataObject()`),
         *   `HInputGroup` uses each child input’s **`dataKey`** (if provided). If `dataKey` is empty,
         *   it falls back to the input’s `id`.
         * - If duplicate `dataKey` values exist within the same group, a `console.warn` is emitted.
         *
         * ---
         *
         * ### 🔘 Radio Grouping by `name`
         * - When a child `HInput` has `inputType="radio"`, its **HTML `name`** defines
         *   the radio **group key** within this `HInputGroup`.
         * - Radios sharing the same `name` behave as a single-choice set.
         * - **Data shape (I/O)** for radios is normalized to:
         *   ```ts
         *   // Used in getDataObject(), v-model emits, load(), setDataObject()
         *   { [radioGroupName: string]: selectedRadioDataKey | null }
         *   ```
         *   - `radioGroupName`: the `name` of the radio group
         *   - `selectedRadioDataKey`: the selected radio’s `dataKey` (fallback to `id`)
         *   - `null`: no selection in that group
         * - Non-radio fields use their **`dataKey` as key** (fallback to `id`):
         *   ```ts
         *   { [dataKey: string]: value }
         *   ```
         * - If no initial value is provided, each radio’s local `v-model` is `false`,
         *   and the group entry becomes `{ [name]: null }` in the group-level object.
         *
         * #### Example
         * ```vue
         * <HInputGroup id="grp" v-model="form">
         *   <!-- group: 'lang' -->
         *   <HInput id="r1" inputType="radio" name="lang" dataKey="lang_ko" :modelValue="true" />
         *   <HInput id="r2" inputType="radio" name="lang" dataKey="lang_en" />
         *
         *   <!-- normal input -->
         *   <HInput id="email" inputType="email" dataKey="user_email" />
         * </HInputGroup>
         * ```
         * - Example result of `getDataObject()` (or v-model binding object):
         *   ```ts
         *   {
         *     // radios by group name
         *     lang: "lang_ko",
         *     // non-radio by dataKey
         *     user_email: "user@example.com"
         *   }
         *   ```
         *
         * #### Dynamic re-grouping
         * - When `setName('newGroup')` is called on a radio, that radio moves
         *   **to the new group at runtime**. The `HInputGroup` re-registers membership
         *   and immediately updates the `{ [name]: dataKey | null }` mapping.
         * - A previously checked radio will transfer to the new group,
         *   and the old group’s selection will be reset (leaving `null` if applicable).
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HInputGroup id="group1" v-model="formData" :editMode="'editable'">
         *   <HInput id="userid" inputType="text" dataKey="user_id" required />
         *   <HInput id="email" inputType="email" dataKey="email" />
         *
         *   <!-- radio group 'agree' -->
         *   <HInput id="agreeY" inputType="radio" name="agree" dataKey="Y" />
         *   <HInput id="agreeN" inputType="radio" name="agree" dataKey="N" />
         * </HInputGroup>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getInputGroup(id)` to access and control the group:
         * ```ts
         * const group = hison.component.getInputGroup('group1')
         * group.load({
         *   user_id: 'abc',
         *   email: 'test@example.com',
         *   agree: 'Y' // radio by group name → selected radio dataKey (fallback to id)
         * })
         *
         * const data = group.getDataObject() // { user_id, email, agree }
         * group.clear()
         * group.setStatus('U')
         * group.setEditMode('readonly')
         * const dataModel = group.getDataModel() // hison.data.DataModel
         * const changed = group.isModified()
         * ```
         *
         * ---
         *
         * ### 🔒 Notes
         * - `v-model` is fully supported and emits changes whenever any child `HInput` updates.
         * - Child `HInput` **`id`** is always required for runtime control and registration.
         * - Group data keys use **`dataKey` first** (fallback to `id`) for non-radio fields.
         * - Radios are keyed by group `name`, and store **selected radio `dataKey`** (fallback to `id`) or `null`.
         * - Inputs auto-sync their values from `v-model` on registration and emit changes upward.
         * - Grouped `HInput` instances self-register via `provide('registerToInputGroup')`.
         *
         * ---
         *
         * @prop {string} id - Unique group identifier. Enables runtime access via `hison.component.getInputGroup(id)`.
         * @prop {('editable' | 'disable' | 'readonly')} [editMode='editable'] - Edit mode.
         * @prop {('C' | 'R' | 'U' | 'D')} [status='R'] - Data status (`C`, `R`, `U`, `D`). Controlled via `.getStatus()` / `.setStatus()`.
         * @prop {Record<string, any>} [modelValue] - Used with `v-model` for two-way binding.
         *   - **Non-radio**: keyed by child input **`dataKey`** (fallback to `id`) → value
         *   - **Radio**: keyed by radio **`name`** → **selected radio `dataKey`** (fallback to `id`) or `null`
         *
         * @event mounted - Fired after mount with `HInputGroupMethods` instance.
         * @event update:modelValue - Fired whenever any child `HInput` changes, emitting the updated object.
         */
        HInputGroup: typeof HInputGroup;
        /**
         * Hisonvue custom label component.
         *
         * `HLabel` is a flexible text/label component that supports plain text, HTML slot content,
         * or hyperlink rendering via `href`. It provides responsive styling, dynamic runtime control,
         * and integrates with `hison` for global access and management.
         *
         * ---
         *
         * ### 🎯 Features
         * - Theme-aware styling via responsive class system (`hison-size-*`, `hison-color-*`, etc.)
         * - Can render as:
         *   - `<span>` (default, with text or slot text only)
         *   - `<a>` (when `href` is provided; supports full anchor attributes via `anchorAttrs`)
         *   - `<div>` (when slot contains HTML elements)
         * - **Dynamic content control:**
         *   - Uses `text` prop if no slot is provided.
         *   - Default slot overrides `text` unless it is *pure text nodes* (then converted into internal text).
         *   - Runtime methods (`getText`, `setText`) work when slot is not an element slot.
         * - **Hyperlink support (`href` + `anchorAttrs`):**
         *   - Supports all anchor attributes (`target`, `rel`, `download`, etc.) via `anchorAttrs` prop and runtime setters.
         *   - Automatically adds `rel="noopener noreferrer"` when `target="_blank"`.
         *   - Keyboard accessible: pressing **Enter** or **Space** focuses and triggers click on links.
         * - **Font style toggles**: `fontBold`, `fontItalic`, `fontThruline`, `fontUnderline`.
         * - **Border (box-shadow) toggle**: `border` prop or runtime methods.
         * - **Background type control**: `backgroundType` prop or runtime methods (`'empty'` (default), `'filled'`, `'transparent'`).
         * - Tooltip support via `title` prop and dynamic `setTitle` method.
         * - Integrated CSS event hooks for hover/focus/active states (same system as `HButton`).
         * - Emits runtime method object on interaction events (`click`, `mouseover`, etc.).
         * - Device-aware responsive reload (`@responsive-change`).
         * - Seamless reload via internal `registerReloadable()` support.
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <!-- Plain text label -->
         * <HLabel
         *   id="lb1"
         *   class="hison-col-6 hison-size-m hison-color-primary"
         *   text="Hello Label"
         *   title="Tooltip text"
         * />
         *
         * <!-- Default slot with HTML overrides text -->
         * <HLabel id="lb2">
         *   <strong>Custom <i>HTML</i></strong>
         * </HLabel>
         *
         * <!-- Pure text slot behaves like text prop (controlled by getText/setText) -->
         * <HLabel id="lb3">Slot text here</HLabel>
         *
         * <!-- Link label -->
         * <HLabel
         *   id="lb4"
         *   class="hison-color-info"
         *   href="https://example.com"
         *   :anchor-attrs="{ target: '_blank' }"
         * >
         *   Visit Example
         * </HLabel>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getLabel(id)` to retrieve control methods at runtime:
         *
         * ```ts
         * const lb = hison.component.getLabel('lb1');
         * lb.setText('Updated Text');
         * lb.setTitle('New tooltip');
         * lb.setFontBold(true);
         * lb.setBorder(true);
         * lb.setBackgroundType('transparent');
         * lb.setHref('https://naver.com');
         * lb.setAnchorAttr('target', '_blank');
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique label identifier. Enables runtime access via `hison.component.getLabel(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         * @prop {boolean} [visible] - Whether the label is shown. Default: `true`.
         * @prop {string} [text] - Text content if no slot is used. If slot is pure text, it is converted to internal text as well.
         * @prop {string} [title] - Tooltip text. Can be updated via `setTitle()`.
         * @prop {string|null} [href] - If provided, label renders as an `<a>` link. Controlled via runtime methods.
         * @prop {Record<string, unknown>} [anchorAttrs] - Extra attributes for `<a>` (target, rel, download, etc.).
         * @prop {boolean} [fontBold] - Bold font style toggle. Adds `hison-font-bold`.
         * @prop {boolean} [fontItalic] - Italic font style toggle. Adds `hison-font-italic`.
         * @prop {boolean} [fontThruline] - Strikethrough font style toggle. Adds `hison-font-thruline`.
         * @prop {boolean} [fontUnderline] - Underline font style toggle. Adds `hison-font-underline`.
         * @prop {('left'|'center'|'right')} [textAlign] - Text alignment. Can be changed via methods.
         * @prop {boolean} [border] - Whether to show border (box-shadow). Default: `false`.
         * @prop {('filled'|'empty'|'transparent')} [backgroundType] - Background style. `'empty'` (default), `'filled'`, or `'transparent'`.
         * @prop {string} [toggleTarget=null] - ID of the target `HInput` (`checkbox` or `radio`) to toggle when the label is clicked or activated by keyboard.
         * @prop {boolean} [translate=true] - If false : prevents browser/auto translation by adding `translate="no"` and `.notranslate` to the rendered element.
         *
         * ---
         *
         * @slot default - Default content inside the label. If only text nodes are provided, behaves like `text` prop (controllable by methods). If elements are provided, overrides text control.
         *
         * ---
         *
         * @event mounted - Emitted after mounting. Passes `HLabelMethods` instance.
         * @event click - Emitted on click (only if rendered as `<a>`). Passes `(MouseEvent, HLabelMethods)`.
         * @event mousedown - Emitted on mousedown (if `<a>`). Passes `(MouseEvent, HLabelMethods)`.
         * @event mouseup - Emitted on mouseup (if `<a>`). Passes `(MouseEvent, HLabelMethods)`.
         * @event mouseover - Emitted on mouseover (if `<a>`). Passes `(MouseEvent, HLabelMethods)`.
         * @event mouseout - Emitted on mouseout (if `<a>`). Passes `(MouseEvent, HLabelMethods)`.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HLabel: typeof HLabel;
        /**
         * Hisonvue custom layout component.
         *
         * `HLayout` is a versatile container component for responsive layout composition.
         * It provides full control over visibility, background, borders, and height — with
         * dynamic class resolution and runtime method integration via `hison`.
         *
         * ---
         *
         * ### 🎯 Features
         * - Responsive design via `hison-col-*`, `hison-pos-*`, and device-aware class extraction
         * - Runtime registration using unique `id`, accessible via `hison.component.getLayout(id)`
         * - Background image configuration (source, repeat, size, alignment)
         * - Background color supports CSS and keyword themes (e.g., `'primary'`, `'danger'`)
         * - Dynamic border configuration (color, width)
         * - Custom height with CSS values
         * - Fully controllable via `HLayoutMethods` (`setVisible`, `setBackColor`, `setHeight`, etc.)
         * - Emits device change via `@responsive-change` (`'mb'`, `'tb'`, `'pc'`, `'wd'`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HLayout
         *   id="mainLayout"
         *   class="hison-col-12-mb hison-col-6-pc"
         *   visible="true"
         *   backColor="muted"
         *   height="300px"
         *   backImageSrc="/images/bg.jpg"
         *   backImageStyle="no-repeat"
         *   backImageAlign="center"
         *   backImageVerticalAlign="bottom"
         *   @click="handleClick"
         *   @responsive-change="handleDeviceChange"
         * >
         *   <HButton ... />
         * </HLayout>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the layout programmatically using `hison.component.getLayout(id)`:
         *
         * ```ts
         * const layout = hison.component.getLayout('mainLayout');
         * layout.setVisible(false);
         * layout.setBackColor('#f0f0f0');
         * layout.setHeight('100vh');
         * layout.setBackImageSrc('/new/image.jpg');
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique layout identifier for method registration (`hison.component.getLayout(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive and custom classes (e.g., `hison-col-12-mb`, `hison-pos-center`).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style string merged with internal background/border styles.
         * @prop {boolean} [visible] - Layout visibility as `'true'` or `'false'`. Default is visible.
         *
         * @prop {string} [backImageSrc] - Background image URL.
         * @prop {('repeat' | 'no-repeat' | 'cover' | 'contain')} [backImageRepeat] - Background repeat or size mode (`'cover'`, `'repeat'`, etc.).
         * @prop {string} [backImageWidth] - CSS size of background image (`'100%'`, `'auto'`, `'300px'`).
         * @prop {('left' | 'center' | 'right')} [backImageAlign] - Horizontal alignment (`'left'`, `'center'`, `'right'`).
         * @prop {('top' | 'center' | 'bottom')} [backImageVerticalAlign] - Vertical alignment (`'top'`, `'center'`, `'bottom'`).
         *
         * @prop {string} [backColor] - Background color (`#fff`, `rgba(0,0,0,0.1)`, or theme key like `'success'`).
         * @prop {boolean} [border] - Whether to show border (box-shadow). Default: `false`.
         * @prop {string} [height] - Layout height (`'100px'`, `'50%'`, `'100vh'`, etc.).
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HLayoutMethods` instance for runtime control.
         * @event click - Mouse click event.
         * @event mousedown - Mouse down event.
         * @event mouseup - Mouse up event.
         * @event mouseover - Mouse over event.
         * @event mouseout - Mouse out event.
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HLayout: typeof HLayout;
        /**
         * Hisonvue custom list component.
         *
         * `HList` provides a flexible list wrapper (`<ul>` or `<ol>`) with theme-aware styling,
         * slot-based rendering, and optional data-driven text list rendering. It supports
         * interactive states, runtime control via methods, and integrates with `hison`
         * for global access and management.
         *
         * ---
         *
         * ### 🎯 Features
         * - Theme-aware styling via responsive class system (`hison-size-*`, `hison-color-*`, etc.).
         * - Can render as:
         *   - `<ul>` or `<ol>` (controlled by `listType`).
         *   - Each `<li>` styled like `HLabel`, with optional marker (bullet or index).
         * - **Rendering modes**:
         *   - Default slot ➜ fully custom markup for each item (loop in consumer template).
         *   - `textList` prop ➜ array of strings/numbers, rendered as `<li>` automatically.
         *   - Scoped `#item` slot ➜ customize how each `textList` item is rendered (`{ item, index }`).
         * - **Marker control**:
         *   - Ordered list (`ol`) shows index numbers.
         *   - Unordered list (`ul`) shows custom bullet character (`bulletChar`).
         *   - `showMarker=false` hides marker entirely.
         * - **Styling options**:
         *   - `border` (box-shadow on container), `listBorder` (per-item).
         *   - `backgroundType` (container), `listBackgroundType` (items).
         * - **Interactivity**:
         *   - `addEvent=true` enables textbox-like CSS event hooks (`focus`, `hover`, `active`).
         *   - Emits item-level events (`click`, `mousedown`, etc.) with `HListMethods`.
         *   - `tabIndex` prop makes items keyboard-focusable; Enter/Space triggers click.
         * - Responsive class reload and hot-reload support.
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <!-- Text list rendering -->
         * <HList
         *   id="list1"
         *   class="hison-col-6 hison-size-m hison-color-primary"
         *   :text-list="['Item A', 'Item B', 'Item C']"
         *   listBorder
         *   backgroundType="empty"
         * />
         *
         * <!-- Custom slot items -->
         * <HList id="list2" listType="ul" listBorder>
         *   <template v-for="(card, i) in cards" :key="i">
         *     <div class="card">
         *       <h4>{{ card.title }}</h4>
         *       <p>{{ card.desc }}</p>
         *     </div>
         *   </template>
         * </HList>
         *
         * <!-- Scoped slot with textList -->
         * <HList id="list3" :text-list="['A', 'B', 'C']">
         *   <template #item="{ item, index }">
         *     <span>{{ index + 1 }} - {{ item }}</span>
         *   </template>
         * </HList>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getList(id)` to retrieve control methods at runtime:
         *
         * ```ts
         * const list = hison.component.getList('list1');
         * list.setListType('ol');
         * list.setTextList(['X', 'Y', 'Z']);
         * list.setBorder(true);
         * list.setListBackgroundType('filled');
         * list.setTabIndex(0);  // make items focusable
         * list.focus();         // focus first item
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique list identifier. Enables runtime access via `hison.component.getList(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for container.
         * @prop {string | CSSProperties | CSSProperties[]} [listItemStyle] - Inline style for each `<li>`.
         * @prop {string | CSSProperties | CSSProperties[]} [listItemInnerStyle] - Inline style for inner item container.
         * @prop {boolean} [visible] - Whether the list is shown. Default: `true`.
         * @prop {boolean} [border] - Whether to show border (box-shadow) on the container.
         * @prop {boolean} [listBorder] - Whether each `<li>` shows border.
         * @prop {'filled'|'empty'|'transparent'} [backgroundType] - Background style of the container. Default: `'empty'`.
         * @prop {'filled'|'empty'|'transparent'} [listBackgroundType] - Background style of list items. Default: `'empty'`.
         * @prop {'ul'|'ol'} [listType] - Whether to render as `<ul>` or `<ol>`. Default: `'ul'`.
         * @prop {string} [bulletChar] - Bullet character when `listType='ul'`. Default: `'•'`.
         * @prop {boolean} [showMarker] - Whether to render markers (bullet or index). Default: `true`.
         * @prop {Array<string|number>} [textList] - Data-driven list items. Ignored if slot elements are provided.
         * @prop {boolean} [addEvent] - Enable textbox-like CSS events and emits. Default: `false`.
         * @prop {number|string|null} [tabIndex] - `tabindex` for each `<li>`. `0` = natural focus order, `null` = not focusable.
         *
         * ---
         *
         * @slot default - Custom list items. When elements are provided, overrides `textList`.
         * @slot item - Scoped slot for rendering `textList` entries with `{ item, index }`.
         *
         * ---
         *
         * @event mounted - Emitted after mounting. Passes `HListMethods` instance.
         * @event click - Emitted on item click. Passes `(MouseEvent, HListMethods)`.
         * @event mousedown - Emitted on item mousedown. Passes `(MouseEvent, HListMethods)`.
         * @event mouseup - Emitted on item mouseup. Passes `(MouseEvent, HListMethods)`.
         * @event mouseover - Emitted on item mouseover. Passes `(MouseEvent, HListMethods)`.
         * @event mouseout - Emitted on item mouseout. Passes `(MouseEvent, HListMethods)`.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HList: typeof HList;
        /**
         * Hisonvue custom modal component.
         *
         * `HModal` renders a fixed-position dialog with optional overlay, caption, and close button.
         * It supports precise screen positioning, sticky header/footer, responsive classes, and full
         * runtime control via `HModalMethods` (open/close, z-index, placements, etc.).
         *
         * ---
         *
         * ### 🎯 Features
         * - Fixed screen positions via `modalPosition` (e.g. `'top-left'`, `'middle-center'`, `'bottom-right'`)
         * - Sticky header/footer inside the scrollable dialog body
         * - Overlay/backdrop with configurable visibility and click-to-close behavior
         * - Caption and Close button, each placeable to header/footer and left/center/right
         * - **Close button customization via slots**:
         *   - Replace the entire button with `#close-button`
         *   - Or override only `#close-icon` / `#close-label` (✔ recommended)
         * - Runtime registration using unique `id`, accessible via `hison.component.getModal(id)`
         * - Scroll lock with **reference counting** (safe for nested modals)
         * - Responsive class extraction (`hison-col-*`, `hison-size-*`, `hison-color-*`)
         * - Animation class hooks for enter/leave transitions
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HModal
         *   id="modal01"
         *   class="hison-col-12"
         *   :visible="false"
         *   :border="true"
         *   backgroundType="empty"
         *   :zIndex="1500"
         *   position="middle-center"
         *   :headerVisible="true"
         *   :footerVisible="false"
         *   caption="Hello"
         *   captionPlacement="header-left"
         *   :closeButtonVisible="true"
         *   closeButtonPlacement="header-right"
         *   :closeClickOverlay="true"
         *   :showOverlay="true"
         *   :overlayStyle="{ background: 'rgba(0,0,0,0.35)' }"
         *   :scrollLock="true"
         *   enterAnimationClass="hison-modal-enter"
         *   leaveAnimationClass="hison-modal-leave"
         *   @open="onOpen"
         *   @close="onClose"
         *   @responsive-change="onDevice"
         * >
         *   <template #default>
         *     modal content...
         *   </template>
         *
         *   <!-- replace whole close button -->
         *   <template #close-button="{ onClick, text, title, placement }">
         *     <MyCustomClose :label="text" @click="onClick" />
         *   </template>
         *
         *   <!-- or override parts only -->
         *   <template #close-icon>❌</template>
         *   <template #close-label>Close</template>
         * </HModal>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the modal programmatically using `hison.component.getModal(id)`:
         *
         * ```ts
         * const modal = hison.component.getModal('modal01');
         * modal.open();
         * modal.setCaption('Updated title');
         * modal.setButtonPlacement('footer-right');
         * modal.setCaptionPlacement('footer-left');
         * modal.setPosition('top-right');
         * modal.setZIndex(2200);
         * ```
         *
         * ---
         *
         * ### ⚠️ Notes on z-index & Nested Modals
         * - `zIndex` controls the wrapper’s stacking order; the overlay is always rendered at `zIndex - 1`.
         * - For **nested modals**, set a higher `zIndex` on the top modal to ensure proper stacking.
         * - Scroll locking is **reference-counted**; closing one modal will not unlock the page if others remain open.
         *
         * ---
         *
         * @prop {string} id - Unique modal identifier for method registration (`hison.component.getModal(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive/custom classes (`hison-col-*`, etc.).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the modal container.
         * @prop {boolean} [visible=false] - Initial visibility (subsequent control via methods only).
         *
         * @prop {boolean} [border=true] - Whether the modal has border (box-shadow).
         * @prop {('empty'|'filled'|'transparent')} [backgroundType='empty'] - Modal background mode.
         *
         * @prop {number} [zIndex=1300] - Stacking context for the modal; overlay uses `zIndex - 1`.
         * @prop {('top-left'|'top-center'|'top-right'|'middle-left'|'middle-center'|'middle-right'|'bottom-left'|'bottom-center'|'bottom-right')} [position='middle-center'] - Fixed screen position of the wrapper.
         *
         * @prop {boolean} [headerVisible=true] - Initial header visibility (auto-hidden if no content/targets).
         * @prop {boolean} [footerVisible=true] - Initial footer visibility (auto-hidden if no content/targets).
         *
         * @prop {string|null} [caption=null] - Caption text (falsy value hides caption).
         * @prop {boolean} [captionBorder=false] - Caption border style.
         * @prop {('empty'|'filled'|'transparent')} [captionBackgroundType='filled'] - Caption background type.
         * @prop {('header-left'|'header-center'|'header-right'|'footer-left'|'footer-center'|'footer-right')} [captionPlacement='header-center'] - Caption placement.
         *
         * @prop {boolean} [closeButtonVisible=true] - Close button visibility.
         * @prop {string} [closeButtonText='X'] - Close button label.
         * @prop {string} [closeButtonTitle='close'] - Close button title attribute.
         * @prop {boolean} [closeButtonBorder=true] - Close button border style.
         * @prop {('empty'|'filled'|'transparent')} [closeButtonBackgroundType='empty'] - Close button background type.
         * @prop {('header-left'|'header-center'|'header-right'|'footer-left'|'footer-center'|'footer-right')} [closeButtonPlacement='footer-right'] - Close button placement.
         *
         * @prop {boolean} [closeClickOverlay=true] - Whether clicking the overlay closes the modal.
         * @prop {boolean} [showOverlay=true] - Whether the overlay (backdrop) is shown.
         * @prop {string | CSSProperties | CSSProperties[]} [overlayStyle] - Inline style for the overlay (merged with computed `zIndex - 1`).
         *
         * @prop {boolean} [scrollLock=true] - Whether to lock page scroll while the modal is visible (reference-counted).
         *
         * @prop {string} [enterAnimationClass] - CSS class for enter animation.
         * @prop {string} [leaveAnimationClass] - CSS class for leave animation.
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HModalMethods` instance for runtime control.
         * @event open - Emitted when the modal opens (after entering animation starts).
         * @event close - Emitted when the modal closes (after leaving animation finishes).
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HModal: typeof HModal;
        /**
         * Hisonvue custom WYSIWYG editor component.
         *
         * `HNote` provides a fully-featured rich text editor based on the `vanillanote2` package.
         * Supports two-way binding via `v-model`, file/image/video attachments, undo/redo, custom styling,
         * and customizable event handling for nearly every interactive element.
         *
         * ---
         *
         * ### 🧩 Features
         * - Rich-text editing with toolbar (paragraph style, bold, underline, etc.)
         * - File/image/video attachments with type/size limits
         * - Customizable appearance (font, size, colors, placeholder, etc.)
         * - Fine-grained interaction control using before/after event props
         * - Multiple instances can be rendered on the same page
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HNote
         *   v-model="noteData"
         *   id="note1"
         *   textarea-height="300px"
         *   :onBoldBeforeClick="(e) => { return false }"
         * />
         * ```
         *
         * ---
         *
         * ### 🛠 Access Instance
         * Use `hison.component.getNote(noteId)` to get the `VanillanoteElement` instance.
         *
         * ```ts
         * const note = hison.component.getNote('note1');
         * note.setNoteData({ html: '<p>Hello World</p>' });
         * ```
         *
         * ---
         * @prop {NoteData} v-model - Binds a `NoteData` object to the editor (content + attachments).
         *
         * `noteProps` supported.
         * @prop {string} id - Required unique identifier of the editor instance.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style.
         * @prop {Boolean} visible - Controls visibility of the editor field.
         * @prop {('editable' | 'disable' | 'readonly')} editMode - Edit mode of the editor.
         *
         * @prop {('ADAPTIVE' | 'MOBILE' | 'DESKTOP')} [noteModeByDevice] - Force mobile, desktop, or adaptive mode.
         * @prop {('TOP' | 'BOTTOM')} [toolPosition] - Toolbar position (`top` or `bottom`).
         * @prop {Number} [toolDefaultLine] - Default number of lines in the toolbar.
         * @prop {Boolean} [toolToggle] - Enable fold/unfold toolbar.
         *
         * @prop {string} [textareaWidth] - Width of the editable area (e.g., `"400px"`).
         * @prop {string} [textareaHeight] - Height of the editable area.
         * @prop {string} [textareaMaxWidth] - Maximum width of the textarea.
         * @prop {string} [textareaMaxHeight] - Maximum height of the textarea.
         * @prop {Boolean} [textareaHeightIsModify] - Whether users can resize textarea height.
         *
         * @prop {Boolean} [placeholderIsVisible] - Show placeholder or not.
         * @prop {Number} [placeholderAddTop] - Vertical offset for placeholder (e.g., `"-10px"`).
         * @prop {Number} [placeholderAddLeft] - Horizontal offset for placeholder.
         * @prop {string} [placeholderWidth] - Placeholder width.
         * @prop {string} [placeholderColor] - Placeholder text color.
         * @prop {string} [placeholderBackgroundColor] - Placeholder background color.
         * @prop {string} [placeholderTitle] - Placeholder title.
         * @prop {string} [placeholderTextContent] - Placeholder description/content.
         *
         * @prop {string} [attFilePreventTypes] - Comma-separated MIME types to block for file attachments.
         * @prop {string} [attFileAcceptTypes] - Comma-separated MIME types to allow for file attachments.
         * @prop {Number} [attFileMaxSize] - Max file size in bytes.
         *
         * @prop {string} [attImagePreventTypes] - Comma-separated MIME types to block for image attachments.
         * @prop {string} [attImageAcceptTypes] - Comma-separated MIME types to allow for image attachments.
         * @prop {Number} [attImageMaxSize] - Max image size in bytes.
         *
         * @prop {Number} [defaultFontSize] - Default font size in px.
         * @prop {Number} [defaultLineHeight] - Default line height.
         * @prop {string} [defaultFontFamily] - Default font family.
         * @prop {string} [defaultToolFontFamily] - Default toolbar font family.
         * @prop {string} [addFontFamily] - Additional font families to allow (comma-separated).
         * @prop {string} [removeFontFamily] - Font families to exclude.
         *
         * @prop {string} [language] - Language key (e.g., `"KOR"`, `"ENG"`).
         * @prop {string} [recodeLimit] - Max undo/redo stack count.
         * @prop {Number} [sizeLevelDesktop] - Editor size ratio for desktop (1–9).
         * @prop {Number} [sizeLevelMobile] - Editor size ratio for mobile (1–9).
         * @prop {Color | string} [color] - Main theme color.
         * @prop {Boolean} [invertColor] - Enable dark mode.
         *
         * @prop {Boolean} [usingParagraphStyle] - Show paragraph style options.
         * @prop {Boolean} [usingBold] - Show bold button.
         * @prop {Boolean} [usingUnderline] - Show underline button.
         * @prop {Boolean} [usingItalic] - Show italic button.
         * @prop {Boolean} [usingUl] - Show unordered list button.
         * @prop {Boolean} [usingOl] - Show ordered list button.
         * @prop {Boolean} [usingTextAlign] - Show text alignment options.
         * @prop {Boolean} [usingFontSize] - Show font size control.
         * @prop {Boolean} [usingLetterSpacing] - Show letter spacing control.
         * @prop {Boolean} [usingLineHeight] - Show line height control.
         * @prop {Boolean} [usingFontFamily] - Show font family selector.
         * @prop {Boolean} [usingColorText] - Show text color options.
         * @prop {Boolean} [usingColorBack] - Show background color options.
         * @prop {Boolean} [usingAttLink] - Show attach link button.
         * @prop {Boolean} [usingAttFile] - Show attach file button.
         * @prop {Boolean} [usingAttImage] - Show attach image button.
         * @prop {Boolean} [usingAttVideo] - Show attach video button.
         * @prop {Boolean} [usingFormatClear] - Show format clear (reset style) button.
         * @prop {Boolean} [usingUndo] - Show undo button.
         * @prop {Boolean} [usingRedo] - Show redo button.
         * @prop {Boolean} [usingHelp] - Show help/shortcut button.
         * @prop {Boolean} [usingParagraphAllStyle] - Show all paragraph style controls.
         * @prop {Boolean} [usingCharacterStyle] - Show all character style buttons.
         * @prop {Boolean} [usingCharacterSize] - Show font size and spacing controls.
         * @prop {Boolean} [usingAttachFile] - Show all attachment buttons.
         * @prop {Boolean} [usingDo] - Show both undo and redo.
         *
         * @event {(note: VanillanoteElement) => void} [mounted] - Called after editor is mounted.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         * `noteEventProps` supported.
         * @prop {(event: Event) => boolean} [textareaBeforeClick] - Before textarea click
         * @prop {(event: Event) => void} [textareaAfterClick] - After textarea click
         * @prop {(event: Event) => boolean} [textareaBeforeFocus] - Before textarea focus
         * @prop {(event: Event) => void} [textareaAfterFocus] - After textarea focus
         * @prop {(event: Event) => boolean} [textareaBeforeBlur] - Before textarea blur
         * @prop {(event: Event) => void} [textareaAfterBlur] - After textarea blur
         * @prop {(event: Event) => boolean} [paragraphStyleSelectBeforeClick] - Before paragraph style select
         * @prop {(event: Event) => void} [paragraphStyleSelectAfterClick] - After paragraph style select
         * @prop {(event: Event) => boolean} [toolToggleBeforeClick] - Before tool toggle
         * @prop {(event: Event) => void} [toolToggleAfterClick] - After tool toggle
         * @prop {(event: Event) => boolean} [styleNomalBeforeClick] - Before style normal
         * @prop {(event: Event) => void} [styleNomalAfterClick] - After style normal
         * @prop {(event: Event) => boolean} [styleHeader1BeforeClick] - Before header1
         * @prop {(event: Event) => void} [styleHeader1AfterClick] - After header1
         * @prop {(event: Event) => boolean} [styleHeader2BeforeClick] - Before header2
         * @prop {(event: Event) => void} [styleHeader2AfterClick] - After header2
         * @prop {(event: Event) => boolean} [styleHeader3BeforeClick] - Before header3
         * @prop {(event: Event) => void} [styleHeader3AfterClick] - After header3
         * @prop {(event: Event) => boolean} [styleHeader4BeforeClick] - Before header4
         * @prop {(event: Event) => void} [styleHeader4AfterClick] - After header4
         * @prop {(event: Event) => boolean} [styleHeader5BeforeClick] - Before header5
         * @prop {(event: Event) => void} [styleHeader5AfterClick] - After header5
         * @prop {(event: Event) => boolean} [styleHeader6BeforeClick] - Before header6
         * @prop {(event: Event) => void} [styleHeader6AfterClick] - After header6
         * @prop {(event: Event) => boolean} [boldBeforeClick] - Before bold
         * @prop {(event: Event) => void} [boldAfterClick] - After bold
         * @prop {(event: Event) => boolean} [underlineBeforeClick] - Before underline
         * @prop {(event: Event) => void} [underlineAfterClick] - After underline
         * @prop {(event: Event) => boolean} [italicBeforeClick] - Before italic
         * @prop {(event: Event) => void} [italicAfterClick] - After italic
         * @prop {(event: Event) => boolean} [ulBeforeClick] - Before ul
         * @prop {(event: Event) => void} [ulAfterClick] - After ul
         * @prop {(event: Event) => boolean} [olBeforeClick] - Before ol
         * @prop {(event: Event) => void} [olAfterClick] - After ol
         * @prop {(event: Event) => boolean} [textAlignSelectBeforeClick] - Before text align select
         * @prop {(event: Event) => void} [textAlignSelectAfterClick] - After text align select
         * @prop {(event: Event) => boolean} [textAlignLeftBeforeClick] - Before text align left
         * @prop {(event: Event) => void} [textAlignLeftAfterClick] - After text align left
         * @prop {(event: Event) => boolean} [textAlignCenterBeforeClick] - Before text align center
         * @prop {(event: Event) => void} [textAlignCenterAfterClick] - After text align center
         * @prop {(event: Event) => boolean} [textAlignRightBeforeClick] - Before text align right
         * @prop {(event: Event) => void} [textAlignRightAfterClick] - After text align right
         * @prop {(event: Event) => boolean} [attLinkBeforeClick] - Before attach link
         * @prop {(event: Event) => void} [attLinkAfterClick] - After attach link
         * @prop {(event: Event) => boolean} [attFileBeforeClick] - Before attach file
         * @prop {(event: Event) => void} [attFileAfterClick] - After attach file
         * @prop {(event: Event) => boolean} [attImageBeforeClick] - Before attach image
         * @prop {(event: Event) => void} [attImageAfterClick] - After attach image
         * @prop {(event: Event) => boolean} [attVideoBeforeClick] - Before attach video
         * @prop {(event: Event) => void} [attVideoAfterClick] - After attach video
         * @prop {(event: Event) => boolean} [fontSizeBoxBeforeClick] - Before font size box
         * @prop {(event: Event) => void} [fontSizeBoxAfterClick] - After font size box
         * @prop {(event: Event) => boolean} [fontSizeBeforeClick] - Before font size
         * @prop {(event: Event) => void} [fontSizeAfterClick] - After font size
         * @prop {(event: Event) => boolean} [fontSizeBeforeInput] - Before font size input
         * @prop {(event: Event) => void} [fontSizeAfterInput] - After font size input
         * @prop {(event: Event) => boolean} [fontSizeBeforeBlur] - Before font size blur
         * @prop {(event: Event) => void} [fontSizeAfterBlur] - After font size blur
         * @prop {(event: Event) => boolean} [letterSpacingBoxBeforeClick] - Before letter spacing box
         * @prop {(event: Event) => void} [letterSpacingBoxAfterClick] - After letter spacing box
         * @prop {(event: Event) => boolean} [letterSpacingBeforeClick] - Before letter spacing
         * @prop {(event: Event) => void} [letterSpacingAfterClick] - After letter spacing
         * @prop {(event: Event) => boolean} [letterSpacingBeforeInput] - Before letter spacing input
         * @prop {(event: Event) => void} [letterSpacingAfterInput] - After letter spacing input
         * @prop {(event: Event) => boolean} [letterSpacingBeforeBlur] - Before letter spacing blur
         * @prop {(event: Event) => void} [letterSpacingAfterBlur] - After letter spacing blur
         * @prop {(event: Event) => boolean} [lineHeightBoxBeforeClick] - Before line height box
         * @prop {(event: Event) => void} [lineHeightBoxAfterClick] - After line height box
         * @prop {(event: Event) => boolean} [lineHeightBeforeClick] - Before line height
         * @prop {(event: Event) => void} [lineHeightAfterClick] - After line height
         * @prop {(event: Event) => boolean} [lineHeightBeforeInput] - Before line height input
         * @prop {(event: Event) => void} [lineHeightAfterInput] - After line height input
         * @prop {(event: Event) => boolean} [lineHeightBeforeBlur] - Before line height blur
         * @prop {(event: Event) => void} [lineHeightAfterBlur] - After line height blur
         * @prop {(event: Event) => boolean} [fontFamilySelectBeforeClick] - Before font family select
         * @prop {(event: Event) => void} [fontFamilySelectAfterClick] - After font family select
         * @prop {(event: Event) => boolean} [colorTextSelectBeforeClick] - Before text color select
         * @prop {(event: Event) => void} [colorTextSelectAfterClick] - After text color select
         * @prop {(event: Event) => boolean} [colorTextSelectBoxBeforeClick] - Before text color box
         * @prop {(event: Event) => void} [colorTextSelectBoxAfterClick] - After text color box
         * @prop {(event: Event) => boolean} [colorText0BeforeClick] - Before color text 0
         * @prop {(event: Event) => void} [colorText0AfterClick] - After color text 0
         * @prop {(event: Event) => boolean} [colorText1BeforeClick] - Before color text 1
         * @prop {(event: Event) => void} [colorText1AfterClick] - After color text 1
         * @prop {(event: Event) => boolean} [colorText2BeforeClick] - Before color text 2
         * @prop {(event: Event) => void} [colorText2AfterClick] - After color text 2
         * @prop {(event: Event) => boolean} [colorText3BeforeClick] - Before color text 3
         * @prop {(event: Event) => void} [colorText3AfterClick] - After color text 3
         * @prop {(event: Event) => boolean} [colorText4BeforeClick] - Before color text 4
         * @prop {(event: Event) => void} [colorText4AfterClick] - After color text 4
         * @prop {(event: Event) => boolean} [colorText5BeforeClick] - Before color text 5
         * @prop {(event: Event) => void} [colorText5AfterClick] - After color text 5
         * @prop {(event: Event) => boolean} [colorText6BeforeClick] - Before color text 6
         * @prop {(event: Event) => void} [colorText6AfterClick] - After color text 6
         * @prop {(event: Event) => boolean} [colorText7BeforeClick] - Before color text 7
         * @prop {(event: Event) => void} [colorText7AfterClick] - After color text 7
         * @prop {(event: Event) => boolean} [colorTextRBeforeClick] - Before R input click
         * @prop {(event: Event) => void} [colorTextRAfterClick] - After R input click
         * @prop {(event: Event) => boolean} [colorTextRBeforeInput] - Before R input
         * @prop {(event: Event) => void} [colorTextRAfterInput] - After R input
         * @prop {(event: Event) => boolean} [colorTextRBeforeBlur] - Before R blur
         * @prop {(event: Event) => void} [colorTextRAfterBlur] - After R blur
         * @prop {(event: Event) => boolean} [colorTextGBeforeClick] - Before G input click
         * @prop {(event: Event) => void} [colorTextGAfterClick] - After G input click
         * @prop {(event: Event) => boolean} [colorTextGBeforeInput] - Before G input
         * @prop {(event: Event) => void} [colorTextGAfterInput] - After G input
         * @prop {(event: Event) => boolean} [colorTextGBeforeBlur] - Before G blur
         * @prop {(event: Event) => void} [colorTextGAfterBlur] - After G blur
         * @prop {(event: Event) => boolean} [colorTextBBeforeClick] - Before B input click
         * @prop {(event: Event) => void} [colorTextBAfterClick] - After B input click
         * @prop {(event: Event) => boolean} [colorTextBBeforeInput] - Before B input
         * @prop {(event: Event) => void} [colorTextBAfterInput] - After B input
         * @prop {(event: Event) => boolean} [colorTextBBeforeBlur] - Before B blur
         * @prop {(event: Event) => void} [colorTextBAfterBlur] - After B blur
         * @prop {(event: Event) => boolean} [colorTextOpacityBeforeClick] - Before opacity click
         * @prop {(event: Event) => void} [colorTextOpacityAfterClick] - After opacity click
         * @prop {(event: Event) => boolean} [colorTextOpacityBeforeInput] - Before opacity input
         * @prop {(event: Event) => void} [colorTextOpacityAfterInput] - After opacity input
         * @prop {(event: Event) => boolean} [colorTextOpacityBeforeBlur] - Before opacity blur
         * @prop {(event: Event) => void} [colorTextOpacityAfterBlur] - After opacity blur
         * @prop {(event: Event) => boolean} [colorBackSelectBeforeClick] - Before background select
         * @prop {(event: Event) => void} [colorBackSelectAfterClick] - After background select
         * @prop {(event: Event) => boolean} [colorBackSelectBoxBeforeClick] - Before background select box
         * @prop {(event: Event) => void} [colorBackSelectBoxAfterClick] - After background select box
         * @prop {(event: Event) => boolean} [colorBack0BeforeClick] - Before color back 0
         * @prop {(event: Event) => void} [colorBack0AfterClick] - After color back 0
         * @prop {(event: Event) => boolean} [colorBack1BeforeClick] - Before color back 1
         * @prop {(event: Event) => void} [colorBack1AfterClick] - After color back 1
         * @prop {(event: Event) => boolean} [colorBack2BeforeClick] - Before color back 2
         * @prop {(event: Event) => void} [colorBack2AfterClick] - After color back 2
         * @prop {(event: Event) => boolean} [colorBack3BeforeClick] - Before color back 3
         * @prop {(event: Event) => void} [colorBack3AfterClick] - After color back 3
         * @prop {(event: Event) => boolean} [colorBack4BeforeClick] - Before color back 4
         * @prop {(event: Event) => void} [colorBack4AfterClick] - After color back 4
         * @prop {(event: Event) => boolean} [colorBack5BeforeClick] - Before color back 5
         * @prop {(event: Event) => void} [colorBack5AfterClick] - After color back 5
         * @prop {(event: Event) => boolean} [colorBack6BeforeClick] - Before color back 6
         * @prop {(event: Event) => void} [colorBack6AfterClick] - After color back 6
         * @prop {(event: Event) => boolean} [colorBack7BeforeClick] - Before color back 7
         * @prop {(event: Event) => void} [colorBack7AfterClick] - After color back 7
         * @prop {(event: Event) => boolean} [colorBackRBeforeClick] - Before background R click
         * @prop {(event: Event) => void} [colorBackRAfterClick] - After background R click
         * @prop {(event: Event) => boolean} [colorBackRBeforeInput] - Before background R input
         * @prop {(event: Event) => void} [colorBackRAfterInput] - After background R input
         * @prop {(event: Event) => boolean} [colorBackRBeforeBlur] - Before background R blur
         * @prop {(event: Event) => void} [colorBackRAfterBlur] - After background R blur
         * @prop {(event: Event) => boolean} [colorBackGBeforeClick] - Before background G click
         * @prop {(event: Event) => void} [colorBackGAfterClick] - After background G click
         * @prop {(event: Event) => boolean} [colorBackGBeforeInput] - Before background G input
         * @prop {(event: Event) => void} [colorBackGAfterInput] - After background G input
         * @prop {(event: Event) => boolean} [colorBackGBeforeBlur] - Before background G blur
         * @prop {(event: Event) => void} [colorBackGAfterBlur] - After background G blur
         * @prop {(event: Event) => boolean} [colorBackBBeforeClick] - Before background B click
         * @prop {(event: Event) => void} [colorBackBAfterClick] - After background B click
         * @prop {(event: Event) => boolean} [colorBackBBeforeInput] - Before background B input
         * @prop {(event: Event) => void} [colorBackBAfterInput] - After background B input
         * @prop {(event: Event) => boolean} [colorBackBBeforeBlur] - Before background B blur
         * @prop {(event: Event) => void} [colorBackBAfterBlur] - After background B blur
         * @prop {(event: Event) => boolean} [colorBackOpacityBeforeClick] - Before background opacity click
         * @prop {(event: Event) => void} [colorBackOpacityAfterClick] - After background opacity click
         * @prop {(event: Event) => boolean} [colorBackOpacityBeforeInput] - Before background opacity input
         * @prop {(event: Event) => void} [colorBackOpacityAfterInput] - After background opacity input
         * @prop {(event: Event) => boolean} [colorBackOpacityBeforeBlur] - Before background opacity blur
         * @prop {(event: Event) => void} [colorBackOpacityAfterBlur] - After background opacity blur
         * @prop {(event: Event) => boolean} [formatClearBeforeClick] - Before format clear
         * @prop {(event: Event) => void} [formatClearAfterClick] - After format clear
         * @prop {(event: Event) => boolean} [undoBeforeClick] - Before undo
         * @prop {(event: Event) => void} [undoAfterClick] - After undo
         * @prop {(event: Event) => boolean} [redoBeforeClick] - Before redo
         * @prop {(event: Event) => void} [redoAfterClick] - After redo
         * @prop {(event: Event) => boolean} [helpBeforeClick] - Before help
         * @prop {(event: Event) => void} [helpAfterClick] - After help
         * @prop {(event: Event) => boolean} [modalBackBeforeClick] - Before modal back
         * @prop {(event: Event) => void} [modalBackAfterClick] - After modal back
         * @prop {(event: Event) => boolean} [helpModalBeforeClick] - Before help modal
         * @prop {(event: Event) => void} [helpModalAfterClick] - After help modal
         * @prop {(event: Event) => boolean} [placeholderBeforeClick] - Before placeholder click
         * @prop {(event: Event) => void} [placeholderAfterClick] - After placeholder click
         */
        HNote: typeof HNote;
        /**
         * Hisonvue custom pagination component.
         *
         * `HPagination` is a lightweight, responsive pagination component that renders Bootstrap-like
         * pagination UI using `HButton` internally. It supports v-model page control, windowed page display,
         * and runtime method controls via `hison` for global access.
         *
         * ---
         *
         * ### 🎯 Features
         * - Theme-aware styling via responsive class system (`hison-size-*`, `hison-color-*`, etc.)
         * - **v-model page control** with clamping and `change` event emission
         * - **Windowed page list** (no ellipsis): shows a sliding range around the current page
         * - **First / Prev / Next / Last** controls with per-button visibility toggles
         * - **Button styling passthrough** to `HButton`:
         *   - Border toggle via `border`
         *   - Background style via `backgroundType` (`"empty"` by default)
         *   - Physical click interval limiting via `clickInterval`
         * - **Adjustable spacing between buttons** via `gap` (e.g., `"0.25rem"`, `8`, `"10px"`)
         * - Device-aware responsive reload (`@responsive-change`)
         * - Seamless reload via internal `registerReloadable()` support
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HPagination
         *   id="pg1"
         *   class="hison-size-m hison-color-primary"
         *   v-model="page"
         *   :total-items="200"
         *   :page-size="10"
         *   :max-buttons="5"
         *   gap="0.5rem"
         *   :show-first="true"
         *   :show-prev="true"
         *   :show-next="true"
         *   :show-last="true"
         *   border
         *   background-type="empty"
         *   :click-interval="300"
         *   @change="(p) => fetchList(p)"
         * />
         *
         * <!-- Customizing control slots -->
         * <HPagination v-model="page" :total-items="100">
         *   <template #first>«</template>
         *   <template #prev>‹</template>
         *   <template #page="{ page: p, isActive }">
         *     <span :style="{ fontWeight: isActive ? '700' : '400' }">{{ p }}</span>
         *   </template>
         *   <template #next>›</template>
         *   <template #last>»</template>
         * </HPagination>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Use `hison.component.getPagination(id)` to retrieve control methods at runtime:
         *
         * ```ts
         * const pg = hison.component.getPagination('pg1');
         * pg.setCurrentPage(10);      // jump to page 10
         * pg.goPrev();                // go to previous page
         * pg.setShowFirst(false);     // hide the first button
         * pg.setGap('12px');          // change spacing
         * pg.setBackgroundType('filled');
         * pg.setClickInterval(500);
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique pagination identifier. Enables runtime access via `hison.component.getPagination(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional class string. Supports `hison-*` responsive system.
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline CSS style for the container.
         * @prop {boolean} [visible] - Whether the pagination is shown. Default: `true`.
         * @prop {boolean} [disable] - Whether all buttons are disabled. Default: `false`.
         * @prop {number | string} [gap] - Spacing between buttons. Number is treated as px; string accepts any CSS length. Default: `"0.25rem"`.
         * @prop {boolean} [border] - Whether to show border on buttons. Default: `true`.
         * @prop {('filled'|'empty'|'transparent')} [backgroundType] - Button background style. Default: `'empty'`.
         * @prop {number} [clickInterval] - Minimum interval (ms) between allowed button clicks.
         * @prop {number} [modelValue] - **v-model** current page (1-based). Clamped to `[1..totalPages]`.
         * @prop {number} [totalItems] - Total item count. Used with `pageSize` to compute total pages (ignored if `totalPages` > 0).
         * @prop {number} [pageSize] - Items per page. Default: `10`.
         * @prop {number} [totalPages] - Explicit total pages. If > 0, it takes precedence over `totalItems/pageSize`.
         * @prop {number} [maxButtons] - Max number of page buttons to display (excluding nav buttons). Default: `5`.
         * @prop {number|string|null} [tabIndex] - `tabindex` for buttons. `0` = natural focus order, `null` = not focusable.
         * @prop {boolean} [showPrev] - Whether to show the "Prev" button. Default: `true`.
         * @prop {boolean} [showNext] - Whether to show the "Next" button. Default: `true`.
         * @prop {boolean} [showFirst] - Whether to show the "First" button. Default: `true`.
         * @prop {boolean} [showLast] - Whether to show the "Last" button. Default: `true`.
         *
         * ---
         *
         * @slot first - Custom content for the **First** button.
         * @slot prev - Custom content for the **Prev** button.
         * @slot page - Custom content for numbered page buttons. Slot props: `{ page: number, isActive: boolean, goPage: (n:number)=>void }`
         * @slot next - Custom content for the **Next** button.
         * @slot last - Custom content for the **Last** button.
         *
         * ---
         *
         * @event mounted - Emitted after mounting. Passes `HPaginationMethods` instance.
         * @event update:modelValue - Emitted when current page changes. Passes `number` (new page).
         * @event change - Emitted together with page change for convenience. Passes `(number, HPaginationMethods)`.
         * @event responsive-change - Emitted on device class change (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HPagination: typeof HPagination;
        /**
         * Hisonvue custom paragraph/text component.
         *
         * `HParagraph` renders plain text (safe, non-HTML) or slot content with rich,
         * theme-aware styling. It supports whitespace policies (default: `'pre-wrap'`),
         * font toggles, alignment, and an optional one-click copy button. The component
         * integrates with `hison` for global runtime access and device-responsive
         * styling.
         *
         * ---
         *
         * ### 🎯 Features
         * - **Theme & responsive classes** (`hison-size-*`, `hison-color-*`, `hison-col-*`, …)
         * - **Whitespace control** via `whiteSpace` (`'pre-wrap'` default)
         * - **Typography toggles**: `fontBold`, `fontItalic`, `fontThruline`, `fontUnderline`
         * - **Alignment**: horizontal (`textAlign`) and vertical (`verticalAlign`)
         * - **Background & border** styling
         * - **Copy support**:
         *   - Keyboard (**Ctrl/Cmd+C**), built-in button, or native copy events
         *   - Emits `copy-click`, `copied`, `copy-error`
         *   - Button can be fully replaced or partially customized via slots
         * - **Reload & device awareness**: `@responsive-change`, `registerReloadable()` integration
         *
         * ---
         *
         * ### 🧠 Slot vs Text Behavior (important)
         * - If the **default slot contains only text nodes**, HParagraph **absorbs that text**
         *   into its internal `text` and renders it (so `getText()` / `setText()` work).
         * - If the default slot **contains any HTML elements**, the slot is rendered **as-is**;
         *   in that case **`getText()` returns `''` and `setText()` is a no-op**.
         *
         * ---
         *
         * ### 🧷 Copy Button ID & Control
         * - The built-in copy button (when shown) uses the id pattern:
         *   **`hison_paragraph_copy_button_${id}`**
         * - You can retrieve and control it via:
         *   ```ts
         *   const btn = hison.component.getButton(`hison_paragraph_copy_button_${id}`);
         *   btn.setDisable(true);
         *   ```
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <!-- 1) Plain usage: default slot (pure text is auto-absorbed) -->
         * <HParagraph id="p0" class="hison-col-12 hison-size-m hison-color-primary" :border="true">
         * Line 1
         *   Line 2
         * Line 3
         * </HParagraph>
         *
         * <!-- 2) Monospace & show copy button -->
         * <HParagraph
         *   id="p1"
         *   class="hison-col-12 hison-size-s hison-color-danger"
         *   :border="true"
         *   :copyEnabled="true"
         *   :showCopyButton="true"
         *   style="font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, Liberation Mono, monospace"
         * >
         * {{
         * `test1
         *     test2
         * test3`
         * }}
         * </HParagraph>
         *
         * <!-- 3) Full custom copy button -->
         * <HParagraph id="p2" :copyEnabled="true" :showCopyButton="true" copyButtonText="Copy">
         *   <template #copy-button="{ onClick }">
         *     <HButton class="hison-size-s" background-type="transparent" :border="true" @click="onClick" title="Copy content">
         *       <template #icon>📋</template>
         *       Custom Copy
         *     </HButton>
         *   </template>
         *   Some text to copy
         * </HParagraph>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * ```ts
         * const p = hison.component.getParagraph('p1');
         * p.setText('Line 1\n  Line 2\nLine 3');
         * p.setWhiteSpace('pre-wrap');   // preserve newlines & sequences of spaces
         * p.setFontBold(true);
         * p.setTextAlign('right');
         * p.setCopyEnabled(true);
         * p.setShowCopyButton(true);
         * await p.copy();                // copies rendered text to clipboard
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique paragraph identifier. Access via `hison.component.getParagraph(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional classes (supports the responsive `hison-*` system).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline styles for the root `<p>`.
         * @prop {boolean} [visible=true] - Toggle visibility.
         * @prop {string} [title] - Tooltip text (`title` attribute).
         * @prop {string} [text] - Text content when no element slot is used (pure-text slot is also absorbed here).
         * @prop {boolean} [fontBold=false] - Adds `hison-font-bold`.
         * @prop {boolean} [fontItalic=false] - Adds `hison-font-italic`.
         * @prop {boolean} [fontThruline=false] - Adds `hison-font-thruline`.
         * @prop {boolean} [fontUnderline=false] - Adds `hison-font-underline`.
         * @prop {'left'|'center'|'right'} [textAlign] - Horizontal alignment.
         * @prop {'top'|'middle'|'bottom'} [verticalAlign='top'] - Vertical alignment (effective when container has a height).
         * @prop {boolean} [border=false] - Shows subtle box-shadow border.
         * @prop {'filled'|'empty'|'transparent'} [backgroundType='empty'] - Background style.
         * @prop {'normal'|'pre'|'pre-wrap'|'pre-line'|'break-spaces'|null} [whiteSpace=null] - Whitespace policy; `null` uses component default (`'pre-wrap'`).
         * @prop {boolean} [copyEnabled=false] - Enables copy via keyboard and button.
         * @prop {boolean} [showCopyButton=false] - Shows the built-in copy button.
         * @prop {string} [copyButtonText='copy'] - Label text for the built-in copy button.
         * @prop {boolean} [translate=true] - If false : prevents browser/auto translation by adding `translate="no"` and `.notranslate` to the inner `<p>`.
         *
         * ---
         *
         * @slot default - Main content. **Pure text only** → absorbed as `text`. **Contains elements** → rendered as slot; `getText`/`setText` disabled.
         * @slot copy-button - Replace the entire copy button. Slot props: `{ onClick, text }`.
         * @slot copy-icon - Replace the icon of the **default** copy button (forwarded to `<HButton #icon>`).
         * @slot copy-label - Replace the label of the **default** copy button.
         *
         * ---
         *
         * @event mounted - Emitted after mount with the `HParagraphMethods` instance.
         * @event copied - Emitted after a copy attempt: `(ok: boolean, api: HParagraphMethods)`.
         * @event copy-click - Emitted on copy intent: `({ src: 'button'|'keyboard'|'native', event, api })`.
         * @event copy-error - Emitted if copy throws: `(error: unknown, api: HParagraphMethods)`.
         * @event responsive-change - Emitted when device class changes (`'mb'|'tb'|'pc'|'wd'`).
         */
        HParagraph: typeof HParagraph;
        /**
         * Hisonvue custom popup component.
         *
         * `HPopup` renders a fixed-position lightweight dialog with optional overlay and a draggable topbar.
         * It supports preset or absolute positioning, responsive classes, and full runtime control via
         * `HPopupMethods` (open/close, z-index, coordinates, draggability, etc.).
         *
         * ---
         *
         * ### 🎯 Features
         * - Fixed screen positions via `ScreenPosition` (e.g. `'top-left'`, `'middle-center'`, `'bottom-right'`)
         * - Absolute positioning with `left`/`top` (overrides presets) and **viewport-clamped dragging**
         * - Overlay/backdrop with configurable visibility and click-to-close behavior
         * - **Close button customization via slots**:
         *   - Replace the entire button with `#close-button`
         *   - Or override only `#close-icon` / `#close-label` (✔ recommended)
         * - Runtime registration using unique `id`, accessible via `hison.component.getPopup(id)`
         * - Scroll lock with **reference counting** (safe for nested popups)
         * - Responsive class extraction (`hison-col-*`, `hison-size-*`, `hison-color-*`)
         * - Animation class hooks for enter/leave transitions
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HPopup
         *   id="popup01"
         *   class="hison-col-6"
         *   :visible="false"
         *   :border="true"
         *   :zIndex="1200"
         *   position="middle-center"
         *   :left="null"
         *   :top="null"
         *   :width="480"
         *   :height="360"
         *   :draggable="true"
         *   :closeClickOverlay="true"
         *   :showOverlay="true"
         *   :overlayStyle="{ background: 'rgba(0,0,0,0.35)' }"
         *   :scrollLock="true"
         *   enterAnimationClass="hison-popup-enter"
         *   leaveAnimationClass="hison-popup-leave"
         *   @open="onOpen"
         *   @close="onClose"
         *   @responsive-change="onDevice"
         * >
         *   <template #default>
         *     popup content...
         *   </template>
         *
         *   <!-- replace whole close button -->
         *   <template #close-button="{ onClick, text, title }">
         *     <MyCustomClose :label="text" :title="title" @click="onClick" />
         *   </template>
         *
         *   <!-- or override parts only -->
         *   <template #close-icon>❌</template>
         *   <template #close-label>Close</template>
         * </HPopup>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the popup programmatically using `hison.component.getPopup(id)`:
         *
         * ```ts
         * const popup = hison.component.getPopup('popup01');
         * popup.open();
         * popup.setDraggable(false);
         * popup.setLeft(40); popup.setTop(30);
         * popup.setPosition('top-right');
         * popup.setZIndex(1400);
         * ```
         *
         * ---
         *
         * ### ⚠️ Notes on z-index, dragging & bounds
         * - `zIndex` controls the wrapper’s stacking order; the overlay is always rendered at `zIndex - 1`.
         * - When `left`/`top` are set (manually or by dragging), preset `position` is ignored (absolute mode).
         * - Dragging is constrained to the **viewport**; the popup cannot be moved off-screen.
         * - Scroll locking is **reference-counted**; closing one popup will not unlock the page if others remain open.
         *
         * ---
         *
         * @prop {string} id - Unique popup identifier for method registration (`hison.component.getPopup(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive/custom classes (`hison-col-*`, etc.).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the popup container.
         * @prop {boolean} [visible=false] - Initial visibility (subsequent control via methods only).
         *
         * @prop {boolean} [border=true] - Whether the popup has border (box-shadow).
         *
         * @prop {number} [zIndex=1200] - Stacking context for the popup; overlay uses `zIndex - 1`.
         * @prop {('top-left'|'top-center'|'top-right'|'middle-left'|'middle-center'|'middle-right'|'bottom-left'|'bottom-center'|'bottom-right')} [position='middle-center'] - Fixed screen position of the wrapper (ignored in absolute mode).
         * @prop {number|null} [left=null] - Absolute X position in pixels (switches to absolute mode).
         * @prop {number|null} [top=null] - Absolute Y position in pixels (switches to absolute mode).
         *
         * @prop {number|null} [width=null] - Width in pixels (optional).
         * @prop {number|null} [height=null] - Height in pixels (optional).
         *
         * @prop {boolean} [draggable=true] - Whether dragging by the topbar is enabled.
         *
         * @prop {boolean} [closeClickOverlay=true] - Whether clicking the overlay closes the popup.
         * @prop {boolean} [showOverlay=true] - Whether the overlay (backdrop) is shown.
         * @prop {string | CSSProperties | CSSProperties[]} [overlayStyle] - Inline style for the overlay (merged with computed `zIndex - 1`).
         *
         * @prop {boolean} [scrollLock=true] - Whether to lock page scroll while the popup is visible (reference-counted).
         *
         * @prop {string} [enterAnimationClass] - CSS class for enter animation.
         * @prop {string} [leaveAnimationClass] - CSS class for leave animation.
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HPopupMethods` instance for runtime control.
         * @event open - Emitted when the popup opens (after entering animation starts).
         * @event close - Emitted when the popup closes (after leaving animation finishes).
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HPopup: typeof HPopup;
        /**
         * Hisonvue custom spinner component.
         *
         * `HSpinner` renders a fixed-position blocking spinner with enforced overlay and scroll lock.
         * It supports precise screen positioning, z-index control, timeout auto-hide, responsive classes,
         * and multiple spinner styles (`ring`, `dots`, `bars`, `pulse`). Consumers can also override
         * the spinner with a custom `#spinner` slot.
         *
         * ---
         *
         * ### 🎯 Features
         * - Fixed screen positions via `position` (e.g. `'top-left'`, `'middle-center'`, `'bottom-right'`)
         * - Enforced overlay/backdrop and scroll lock (always active while visible)
         * - Built-in spinner styles: **ring**, **dots**, **bars**, **pulse**
         * - **Custom spinner slot**:
         *   - Replace with `#spinner="{ spinnerEl, spinner, type }"`
         *   - Provides access to runtime methods and refs
         * - Timeout auto-hide with `timeoutMs` (0 disables)
         * - Runtime registration using unique `id`, accessible via `hison.component.getSpinner(id)`
         * - Responsive class extraction (`hison-size-*`, `hison-color-*`, `hison-col-*`)
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HSpinner
         *   id="spinner01"
         *   class="hison-size-m hison-color-primary"
         *   :visible="false"
         *   :zIndex="1400"
         *   position="middle-center"
         *   :timeoutMs="5000"
         *   spinnerType="ring"
         *   :overlayStyle="{ background: 'rgba(0,0,0,0.4)' }"
         *   @open="onOpen"
         *   @close="onClose"
         *   @toggle="onToggle"
         *   @responsive-change="onDevice"
         * />
         *
         * <!-- custom spinner -->
         * <HSpinner id="spinnerCustom" :visible="true">
         *   <template #spinner="{ spinnerEl, spinner, type }">
         *     <svg :ref="spinnerEl" width="40" height="40" viewBox="0 0 40 40">
         *       <circle
         *         cx="20" cy="20" r="16"
         *         fill="none" stroke="currentColor" stroke-width="4"
         *         stroke-linecap="round" stroke-dasharray="80 40"
         *       >
         *         <animateTransform
         *           attributeName="transform"
         *           type="rotate"
         *           from="0 20 20" to="360 20 20"
         *           dur="1.2s" repeatCount="indefinite"
         *         />
         *       </circle>
         *     </svg>
         *   </template>
         * </HSpinner>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * Access the spinner programmatically using `hison.component.getSpinner(id)`:
         *
         * ```ts
         * const spinner = hison.component.getSpinner('spinner01');
         * spinner.open();
         * spinner.setSpinnerType('dots');
         * spinner.setPosition('bottom-right');
         * spinner.setZIndex(9999);
         * spinner.setTimeout(3000);
         * ```
         *
         * ---
         *
         * ### ⚠️ Notes
         * - `visible` prop is only an initial state. Use methods (`open/close/toggle/setVisible`) to control after mount.
         * - Overlay and scroll lock are **always enforced**; they cannot be disabled.
         * - `zIndex` controls the wrapper’s stacking order; overlay is always rendered at `zIndex - 1`.
         * - For **multiple spinners**, set distinct `zIndex` values to ensure proper stacking order.
         *
         * ---
         *
         * @prop {string} id - Unique spinner identifier for method registration (`hison.component.getSpinner(id)`).
         * @prop {string | string[] | Record<string, boolean>} [class] - Responsive/custom classes (`hison-col-*`, etc.).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline style for the spinner container.
         * @prop {boolean} [visible=false] - Initial visibility (subsequent control via methods only).
         *
         * @prop {number} [zIndex=1500] - Stacking context for the spinner; overlay uses `zIndex - 1`.
         * @prop {('top-left'|'top-center'|'top-right'|'middle-left'|'middle-center'|'middle-right'|'bottom-left'|'bottom-center'|'bottom-right')} [position='middle-center'] - Fixed screen position of the wrapper.
         *
         * @prop {string | CSSProperties | CSSProperties[]} [overlayStyle] - Inline style for the overlay (merged with computed `zIndex - 1`).
         * @prop {number} [timeoutMs=0] - Auto-hide timeout in milliseconds. `0` disables timeout.
         * @prop {('ring'|'dots'|'bars'|'pulse')} [spinnerType='ring'] - Built-in spinner type (ignored if custom slot is provided).
         *
         * ---
         *
         * @event mounted - Emitted on mount. Returns `HSpinnerMethods` instance for runtime control.
         * @event open - Emitted when the spinner opens.
         * @event close - Emitted when the spinner closes.
         * @event toggle - Emitted when the spinner is toggled (open/close).
         * @event responsive-change - Emitted when device type changes (`'mb'`, `'tb'`, `'pc'`, `'wd'`).
         */
        HSpinner: typeof HSpinner;
        /**
         * Hisonvue custom table component.
         *
         * `HTable` provides a flexible, theme-aware table wrapper supporting
         * striped/hover states, caption handling, section-level alignment,
         * bulk cell class/style injection, and runtime programmatic control.
         * It integrates with `hison` for global runtime access and
         * device-responsive styling.
         *
         * ---
         *
         * ### 🎯 Features
         * - **Theme & responsive classes** (`hison-size-*`, `hison-color-*`, `hison-col-*`, …)
         * - **Caption** via prop or slot (`#caption`)
         * - **Borders**: global table border + per-side section borders
         *   (`header/body/footer` × `top/bottom/left/right`)
         * - **Striped / hover modes**:
         *   - Row/column striping
         *   - Row/column hover highlight (JS-assisted for col hover)
         * - **Alignment**:
         *   - Horizontal (`headerTextAlign`, `bodyTextAlign`, `footerTextAlign`)
         *   - Vertical (`headerVerticalAlign`, `bodyVerticalAlign`, `footerVerticalAlign`)
         * - **Bulk cell customization** via `headerCellClass`/`bodyCellClass`/`footerCellClass`
         *   and `headerCellStyle`/`bodyCellStyle`/`footerCellStyle`
         * - **Background & border** styling
         * - **Reload & device awareness**: `@responsive-change`, `registerReloadable()` integration
         *
         * ---
         *
         * ### 🧠 Caption vs Slot Behavior
         * - Use the **`caption` prop** to set plain caption text.
         * - Use the **`#caption` slot** for fully custom caption markup (takes precedence).
         *
         * ---
         *
         * ### 🧷 DOM Section Access
         * - Raw section refs are exposed via methods:
         *   - `getHeadElement()` → `<thead>`
         *   - `getBodyElement()` → `<tbody>`
         *   - `getFootElement()` → `<tfoot>`
         * - Row utilities:
         *   - `getRowCount()` → number of `<tr>` in body
         *   - `getRowElement(index)` → specific `<tr>` by index
         *
         * ---
         *
         * ### ⚙️ Usage
         * ```vue
         * <HTable
         *   id="tbl1"
         *   class="hison-col-12 hison-size-m hison-color-primary"
         *   :border="true"
         *   :striped="'row'"
         *   :hoverable="'row'"
         *   :caption="'Monthly Report'"
         *   :headerTextAlign="'center'"
         *   :bodyTextAlign="'left'"
         *   :footerTextAlign="'right'"
         * >
         *   <template #thead>
         *     <tr><th>Month</th><th>Sales</th><th>Profit</th></tr>
         *   </template>
         *   <tr><td>Jan</td><td>100</td><td>50</td></tr>
         *   <tr><td>Feb</td><td>120</td><td>60</td></tr>
         *   <template #tfoot>
         *     <tr><td>Total</td><td>220</td><td>110</td></tr>
         *   </template>
         * </HTable>
         * ```
         *
         * ---
         *
         * ### 🛠 Runtime Usage
         * ```ts
         * const t = hison.component.getTable('tbl1');
         * t.setCaption('Updated Report');
         * t.setBackgroundType('filled');
         * t.setStriped('col');
         * t.setHoverable('col');
         * t.setHeaderBorderBottom(true);
         * console.log('Row count:', t.getRowCount());
         * const firstRow = t.getRowElement(0);
         * if (firstRow) firstRow.classList.add('highlight');
         * ```
         *
         * ---
         *
         * @prop {string} id - Unique table identifier. Access via `hison.component.getTable(id)`.
         * @prop {string | string[] | Record<string, boolean>} [class] - Additional classes (supports the responsive `hison-*` system).
         * @prop {string | CSSProperties | CSSProperties[]} [style] - Inline styles for the `<table>`.
         * @prop {boolean} [visible=true] - Toggle visibility.
         * @prop {string} [caption] - Table caption (use `#caption` slot for custom markup).
         * @prop {'row'|'col'|'none'} [striped='row'] - Striped mode: alternate rows or columns.
         * @prop {'row'|'col'|'none'} [hoverable='row'] - Hover mode: row or column highlight.
         * @prop {boolean} [border=false] - Shows subtle box-shadow border on the table.
         *
         * @prop {boolean} [headerBorderTop=false] - Show top border on `<thead>`.
         * @prop {boolean} [headerBorderBottom=false] - Show bottom border on `<thead>`.
         * @prop {boolean} [headerBorderLeft=false] - Show left border on `<thead>`.
         * @prop {boolean} [headerBorderRight=false] - Show right border on `<thead>`.
         * @prop {boolean} [bodyBorderTop=false] - Show top border on `<tbody>`.
         * @prop {boolean} [bodyBorderBottom=false] - Show bottom border on `<tbody>`.
         * @prop {boolean} [bodyBorderLeft=false] - Show left border on `<tbody>`.
         * @prop {boolean} [bodyBorderRight=false] - Show right border on `<tbody>`.
         * @prop {boolean} [footerBorderTop=false] - Show top border on `<tfoot>`.
         * @prop {boolean} [footerBorderBottom=false] - Show bottom border on `<tfoot>`.
         * @prop {boolean} [footerBorderLeft=false] - Show left border on `<tfoot>`.
         * @prop {boolean} [footerBorderRight=false] - Show right border on `<tfoot>`.
         *
         * @prop {'left'|'center'|'right'} [headerTextAlign='center'] - Horizontal alignment of `<thead>` cells.
         * @prop {'left'|'center'|'right'} [bodyTextAlign='left'] - Horizontal alignment of `<tbody>` cells.
         * @prop {'left'|'center'|'right'} [footerTextAlign='right'] - Horizontal alignment of `<tfoot>` cells.
         *
         * @prop {'top'|'middle'|'bottom'} [headerVerticalAlign='middle'] - Vertical alignment of `<thead>` cells.
         * @prop {'top'|'middle'|'bottom'} [bodyVerticalAlign='middle'] - Vertical alignment of `<tbody>` cells.
         * @prop {'top'|'middle'|'bottom'} [footerVerticalAlign='middle'] - Vertical alignment of `<tfoot>` cells.
         *
         * @prop {'filled'|'empty'|'transparent'} [backgroundType='empty'] - Background style.
         *
         * @prop {string | string[] | Record<string, boolean>} [headerCellClass] - Extra classes applied to all `<th>` cells.
         * @prop {string | string[] | Record<string, boolean>} [bodyCellClass] - Extra classes applied to all `<td>` in `<tbody>`.
         * @prop {string | string[] | Record<string, boolean>} [footerCellClass] - Extra classes applied to all `<td>` in `<tfoot>`.
         * @prop {string | CSSProperties | CSSProperties[]} [headerCellStyle] - Inline style(s) applied to all `<th>` cells.
         * @prop {string | CSSProperties | CSSProperties[]} [bodyCellStyle] - Inline style(s) applied to all `<td>` in `<tbody>`.
         * @prop {string | CSSProperties | CSSProperties[]} [footerCellStyle] - Inline style(s) applied to all `<td>` in `<tfoot>`.
         *
         * ---
         *
         * @slot caption - Custom caption markup (overrides `caption` prop).
         * @slot colgroup - Inject a custom `<colgroup>` definition for column sizing.
         * @slot thead - Table header rows (`<tr><th>…</th></tr>`).
         * @slot default - Table body rows (`<tr><td>…</td></tr>`).
         * @slot tfoot - Table footer rows (`<tr><td>…</td></tr>`).
         *
         * ---
         *
         * @event mounted - Emitted after mount with the `HTableMethods` instance.
         * @event responsive-change - Emitted when device class changes (`'mb'|'tb'|'pc'|'wd'`).
         */
        HTable: typeof HTable;
    }
}
