import * as React from 'react';
export interface FileItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
    name: string;
    /**
     * 兩種呈現 mode（精簡 vs 完整）：
     * - `compact`（預設）：paperclip + filename 單行 inline
     * - `rich`：縮圖 + 檔名 + size + status + progress 的完整 card 呈現
     */
    mode?: 'compact' | 'rich';
    /**
     * 清單所在的 surface context（2026-06-03 codify rich-borderless）：
     * - `form`（預設）：rich = border card（自立輪廓，Slack/Notion/Linear attachment 慣例）
     * - `upload-manager`：rich = **無邊框**（Google Drive/Dropbox 上傳管理面板 —— 面板自身已是容器，
     *   card border 多餘 = 雙層容器）；avatar 作每筆 item 視覺邊界。compact 的進度條/灰底不受 surface 影響
     *   （由 status 決定）。
     * surface-driven（非 status-driven）：避免 form 內 rich 上傳中變無邊框、存好變 card 的邊框閃爍。
     * 列間 gap 由 List wrapper canonical 決定（form rich 8px / upload-manager rich 12px tight / compact 4px，見 spec）。
     */
    surface?: 'form' | 'upload-manager';
    status?: 'uploading' | 'completed' | 'error';
    progress?: number;
    /** rich mode: 檔案大小、狀態訊息。compact: 只有 error 才顯示。 ReactNode 支援 inline clickable link(如「View log」)。 */
    description?: React.ReactNode;
    thumbnailSrc?: string;
    actions?: React.ReactNode;
    onClick?: () => void;
    /**
     * Hover 動作(passive 狀態 icon 變互動 button 的 UX):
     * - `onDownload`:有值時,`status="completed"` 的綠 ✓ icon 在 row hover 時
     *   換成 Download ↓ button;click 觸發 onDownload。無值保持 passive 綠 ✓。
     * - `onRetry`:有值時,`status="error"` 的紅 ✗ icon 在 row hover 時換成 RotateCw ⟲
     *   button;click 觸發 onRetry。無值保持 passive 紅 ✗。
     *
     * 世界級對照:Gmail / Slack / Dropbox 附件的 passive 狀態 → hover 變 action
     * 的 UX,使用者知道檔案狀態且能立即行動。
     */
    onDownload?: () => void;
    onRetry?: () => void;
}
declare const FileItem: React.ForwardRefExoticComponent<FileItemProps & React.RefAttributes<HTMLDivElement>>;
export declare const fileItemMeta: {
    readonly component: "FileItem";
    readonly family: 2;
    readonly variants: {};
    readonly sizes: {};
    readonly states: readonly ["default"];
    readonly tokens: {
        readonly bg: readonly ["bg-secondary", "bg-surface"];
        readonly fg: readonly ["text-fg-muted", "text-fg-secondary"];
        readonly ring: readonly [];
    };
};
export { FileItem };
//# sourceMappingURL=file-item.d.ts.map