import * as React from 'react';
import type { LucideIcon } from 'lucide-react';
import type { AvatarData } from '../../components/Avatar/avatar';
/**
 * SelectMenu — Popover + Command 組成的完整下拉選單
 *
 * ── 功能 ──
 *   單選 / 多選、搜尋過濾、分組、可建立新選項（creatable）
 *   多選有 footer「全部」checkbox
 *
 * ── 架構 ──
 *   Popover（浮動容器）
 *     └── Command（cmdk，搜尋 + 鍵盤導覽）
 *           ├── CommandInput（搜尋框）
 *           ├── CommandList（選項列表）
 *           │     └── CommandGroup → MenuItem
 *           └── Footer（多選全選）
 */
export interface SelectMenuOption {
    value: string;
    label: string;
    description?: string;
    icon?: LucideIcon;
    avatar?: AvatarData;
    disabled?: boolean;
    group?: string;
}
export interface SelectMenuGroupConfig {
    key: string;
    label: string;
}
type SizeKey = 'sm' | 'md' | 'lg';
export interface SelectMenuProps {
    /** 選項列表 */
    options: SelectMenuOption[];
    /** 群組定義（key 對應 option.group） */
    groups?: SelectMenuGroupConfig[];
    /** 當前值（單選 string，多選 string[]） */
    value?: string | string[] | null;
    /** 值變更 callback */
    onValueChange?: (value: string | string[]) => void;
    /** 多選模式 */
    multiple?: boolean;
    /** 顯示搜尋框 */
    searchable?: boolean;
    /** 可建立新選項 */
    creatable?: boolean;
    /** 建立新選項 callback */
    onCreate?: (value: string) => void;
    /** creatable 的 label 格式，預設 '直接使用「{query}」' */
    createLabel?: (query: string) => string;
    /** 觸發元件（asChild） */
    children: React.ReactNode;
    /** 搜尋框 placeholder */
    searchPlaceholder?: string;
    /** 空選項提示 */
    emptyText?: string;
    /** Loading 狀態(2026-05-15 audit B fix per user verbatim「dropdown 隨時可開,讀取在 panel 中間 CircularProgress」)
     *  true → render `<Empty icon={<CircularProgress size={48}/>} className="py-6" />` 取代 options(純 spinner,無 description);
     *  trigger 不變,user 隨時可開 dropdown。對齊 MUI Autocomplete loading dropdown-body + Ant Select
     *  loading idiom + DS 既有 `empty.spec.md:191` 「全頁 loading = Empty + CircularProgress compose」SSOT。
     */
    loading?: boolean;
    /** 尺寸 */
    size?: SizeKey;
    /** 對齊方式 */
    align?: 'start' | 'end';
    /** 列表最少顯示幾行選項高度（預設 3），影響空狀態最小高度 */
    minRows?: number;
    /** 最小寬度（px），預設跟隨觸發元件 */
    minWidth?: number;
    /** 受控 open 狀態 */
    open?: boolean;
    /** 預設打開(uncontrolled initial state)— 2026-05-15 audit Dim 26 V1 fix per user verbatim「A:1」approval */
    defaultOpen?: boolean;
    /** open 狀態變更 callback */
    onOpenChange?: (open: boolean) => void;
    /** 自訂選項 label 渲染（預設渲染 option.label 純文字） */
    renderLabel?: (option: SelectMenuOption) => React.ReactNode;
    /** 攔截 PopoverContent 的 onOpenAutoFocus（如 Select searchable 需阻止 focus 搶走） */
    onOpenAutoFocus?: (e: Event) => void;
    /**
     * Popover 內容容器的 DOM id(set 在 PopoverContent 外層 div,**非** cmdk 內層 `role="listbox"` 本身)。
     * Combobox / 自定 trigger 用 `aria-controls` 指向此 id 時,指向的是 **popover 容器(listbox 的 ancestor)**——
     * AT 經此容器可定位到內部 cmdk listbox(cmdk List 自帶 auto-generated `role="listbox"` id)。
     */
    contentId?: string;
    className?: string;
}
declare const SelectMenu: React.ForwardRefExoticComponent<SelectMenuProps & React.RefAttributes<HTMLElement>>;
export declare const selectMenuMeta: {
    readonly component: "SelectMenu";
    readonly family: 4;
    readonly variants: {};
    readonly sizes: {};
    readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-surface-raised", "bg-transparent"];
        readonly fg: readonly ["text-fg-muted"];
        readonly ring: readonly [];
    };
};
export { SelectMenu };
//# sourceMappingURL=select-menu.d.ts.map