/**
 * @internal — DS-internal 單元(per `.claude/rules/ui-development.md` Public vs Internal canonical;spec frontmatter `isInternal`)。
 * 不進 root barrel front-door;由 DropdownMenu / SelectMenu 等 menu 類 DS 元件 wrap 消費,end-user app 請用 wrapper 元件。
 */
import * as React from 'react';
import { type VariantProps } from 'class-variance-authority';
import type { LucideIcon } from 'lucide-react';
import { type AvatarData } from '../../components/Avatar/avatar';
declare const menuItemVariants: (props?: ({
    size?: import("../../patterns/element-anatomy/item-anatomy").RowSize | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof menuItemVariants> {
    /** Label 文字 */
    children: React.ReactNode;
    /** 次要說明文字，顯示在 label 下方 */
    description?: React.ReactNode;
    /** 左側 icon（LucideIcon），與 avatar 互斥 */
    startIcon?: LucideIcon;
    /** 左側頭像資料（AvatarData），元件內部渲染 Avatar。與 startIcon 互斥 */
    avatar?: AvatarData;
    /** 顯示 checkbox（多選模式由父層控制） */
    checkbox?: boolean;
    /** Checkbox 選中狀態 */
    checked?: boolean | 'indeterminate';
    /** 單選選中（bg-neutral-selected 背景高亮，持續選中狀態） */
    selected?: boolean;
    /** 後綴 Tag（ReactNode），靠右對齊 */
    tag?: React.ReactNode;
    /** 後綴自訂內容（ReactNode），用於 DropdownMenu 的 badge/endIcon/shortcut 等 */
    endContent?: React.ReactNode;
    /** 停用 */
    disabled?: boolean;
    /** 作為群組標題（不可選，font-medium，fg-muted） */
    header?: boolean;
    /**
     * Label 最大行數(line-clamp 截斷,超過顯示 ellipsis)。
     *
     * - `undefined`(預設 prop 值未傳)→ 套用元件預設 `1`(單行截斷,符合選單快速掃視需求)
     * - 數字(1-6)→ 截斷到該行數;>6 超出 line-clamp utility 支援範圍 → 不截斷(同 'none',見 lineClampClass)
     * - `'none'` → **明確**不截斷,自然 wrap 任意行數
     *
     * 為什麼用 `'none'` 而不是 `undefined` 表達不截斷?React props 的 destructure default
     * 在 `undefined` 時會接管,所以 `<MenuItem labelMaxLines={undefined}>` 等同沒傳,
     * 會 fallback 到預設 `1`。要明確覆寫成「不截斷」,必須用一個非 undefined 的 sentinel。
     */
    labelMaxLines?: number | 'none';
    /**
     * Description 最大行數。
     *
     * - `undefined`(預設 prop 值未傳)→ 套用元件預設 `1`(跟 label 對稱,維持掃視節奏)
     * - 數字(1-6)→ 截斷到該行數;>6 超出 line-clamp utility 支援範圍 → 不截斷(同 'none',見 lineClampClass)
     * - `'none'` → 明確不截斷
     *
     * 為什麼預設 1?Menu 的設計目的是「快速掃視多個選項挑一個」,垂直空間是
     * 寶貴的——一個過高的 item 會破壞 row rhythm,讓使用者眼睛重新校準。description
     * 跟 label 對稱地截到 1 行,確保所有 item 高度一致(無 desc / 有 desc 兩種高度)。
     * Consumer 若有合理理由要 2 行 description,可顯式 override。
     */
    descMaxLines?: number | 'none';
}
declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.RefAttributes<HTMLDivElement>>;
export interface MenuGroupProps extends React.HTMLAttributes<HTMLDivElement> {
    children: React.ReactNode;
}
declare const MenuGroup: React.ForwardRefExoticComponent<MenuGroupProps & React.RefAttributes<HTMLDivElement>>;
export interface MenuFooterProps extends React.HTMLAttributes<HTMLDivElement> {
    children: React.ReactNode;
}
declare const MenuFooter: React.ForwardRefExoticComponent<MenuFooterProps & React.RefAttributes<HTMLDivElement>>;
export declare const menuItemMeta: {
    readonly component: "MenuItem";
    readonly family: 1;
    readonly variants: {};
    readonly sizes: {
        readonly sm: {};
        readonly md: {};
        readonly lg: {};
    };
    readonly defaultSize: "md";
    readonly states: readonly ["default", "hover", "selected", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-neutral-hover", "bg-neutral-selected"];
        readonly fg: readonly ["text-fg-muted", "text-fg-disabled"];
    };
};
export { MenuItem, MenuGroup, MenuFooter, menuItemVariants };
//# sourceMappingURL=menu-item.d.ts.map