import * as React from 'react';
import { type VariantProps } from 'class-variance-authority';
import type { LucideIcon } from 'lucide-react';
import type { FieldMode, FieldVariant } from '../../components/Field/field-types';
import { fieldWrapperStyles } from '../../components/Field/field-wrapper';
import { type InlineActionConfig } from '../../patterns/element-anatomy/item-anatomy';
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>, Omit<VariantProps<typeof fieldWrapperStyles>, 'mode' | 'variant'> {
    /** Field display mode */
    mode?: FieldMode;
    /**
     * Visual chrome(正交於 mode);Phase B1(2026-05-05)從 `variant` 改名 `chrome`,對齊 FieldContext.variant 透傳。
     * 公開 variant 兩個:
     * - `'default'`(預設)— Field wrapper 完整 variant:bg-surface + 明顯 border + hover/focus 回饋。適用表單、Field 內嵌。
     * - `'bare'` — 透明 variant,hover / focus 才出現 border。適用 Toolbar inline editing(如 FileViewer zoom input / chart config toolbar / rich text toolbar number input)。保留 padding / typography / height,只拿掉背景和常態 border。
     *
     * @internal `'naked'` — 完全無 chrome / 無 border / 無 focus ring。單獨使用無視覺邊界,**不可直接 standalone 用**;僅供 DS 內部 cell-as-input 組合(host cell 自管 border + focus visual,正被 `FieldSurfaceContext='table-cell'` 取代)。consumer 請用 `default` / `bare`。
     *
     * 透傳:在 `<Field variant="default|bare">` 內自動繼承 context.variant;per-prop override context。
     * 世界級對照(bare):VS Code settings input / Figma toolbar number / Notion prop input。
     */
    variant?: FieldVariant;
    /** Error 狀態（正交於 mode）。border-error + aria-invalid。 */
    error?: boolean;
    /** 左側靜態 icon — 輔助理解 input 用途（如 Search）。fg-muted。 */
    startIcon?: LucideIcon;
    /** 右側 inline action — 宣告式 API，Field 根據 size 自動渲染。 */
    endAction?: InlineActionConfig;
    /**
     * 右側 slot(ReactNode)— escape hatch 供 consumer 放自訂元素(如 DropdownMenuTrigger asChild + ItemInlineActionButton)。
     * 跟 `endAction` 互斥(同時傳 endSlot 會優先,endAction 被忽略)。
     *
     * **使用情境**:ZoomInput 需要 chevron 作 DropdownMenuTrigger anchor,config-only API 無法做到。
     * **禁止情境**:表單欄位 / 一般 inline action → 用 `endAction` 宣告式 API。
     */
    endSlot?: React.ReactNode;
    /**
     * Loading 狀態(async 驗證 / debounce fetch 中)。
     * - **input 保持可編輯**(user 可以邊改邊讀,debounce 場景 UX 最好)
     * - 世界級對照:Ant Input.Search 派(input editable during loading);非 Material readonly 派
     * - 自動在 endAction slot 塞 `<CircularProgress size={iconSize}/>`(與 endAction prop 互斥)
     * - 宣告 `aria-busy="true"` 讓 screen reader 感知處理中
     */
    loading?: boolean;
    /**
     * Auto-width:Input 寬度 = 內容寬(value / placeholder 文字寬)+ startIcon + endAction + padding。
     * 使用 CSS `field-sizing: content`(Chrome 123+ / Safari 17.4+;Firefox 還在實驗)。
     *
     * **使用情境**:
     * - Inline edit(VS Code setting row / Figma property toolbar number input)
     * - ZoomInput(FileViewer 縮放比例:輸入「100%」自動縮到三位數寬)
     * - Tag / Chip 內 inline rename
     *
     * **不要用在**:表單 Field(Field 需要欄寬對齊,不該隨值跳動)
     *
     * **fallback**:不支援 `field-sizing` 的瀏覽器會退化為 `w-auto`(wrapper 縮到 content 尺寸,
     * input 本身有 min-width 避免消失)。UX 上稍不一致但不致斷;若必須精準對齊所有瀏覽器,
     * consumer 可自行傳 `style={{ width: ... }}` 顯式寬度,不走 auto。
     */
    autoWidth?: boolean;
}
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
export declare const inputMeta: {
    readonly component: "Input";
    readonly family: 4;
    readonly variants: {};
    readonly sizes: {};
    readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-surface"];
        readonly fg: readonly ["text-fg-disabled", "text-fg-muted"];
        readonly ring: readonly [];
    };
};
export { Input };
//# sourceMappingURL=input.d.ts.map