import * as React from 'react';
import * as TabsPrimitive from '@radix-ui/react-tabs';
import type { LucideIcon } from 'lucide-react';
/**
 * Tabs — 基於 Radix Tabs，橋接設計系統 token
 *
 * ── 定位 ──
 *   同一上下文底下切換平行的 view。切 view（不是切 value）。
 *   切 value 用 SegmentedControl；切路由用 navigation。
 *
 * ── Size ──
 *   sm   h-tab-sm（32/40），★ 預設(2026-05-17 從 md 改),overlay / chrome / dense
 *   md   h-tab-md（40/48），future tier 無 recommended use case
 *   lg   h-tab-lg（48/56），page-level hero / 獨立 tabs 取代 chrome header
 *
 * ── 寬度行為 ──
 *   Trigger 寬度永遠由內容決定（hug content）。
 *   Triggers 之間 gap 為 --layout-space-loose（16px / 24px lg density）。
 *
 * ── Trigger 結構 ──
 *   [startIcon?] [label] [suffix: badge? + endIcon?]
 *   slot 間 gap-2，suffix 內 gap-1
 *
 * ── Selected underline ──
 *   使用 ::after 絕對定位在 bottom: -1px，2px primary-hover，
 *   蓋住 TabsList 的 1px gray border（單一視覺線條，不雙線）。
 */
type TabsSize = 'sm' | 'md' | 'lg';
type TabsOverflow = 'none' | 'scroll' | 'menu';
interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {
}
declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
interface TabsListProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> {
    size?: TabsSize;
    /**
     * Overflow 處理模式。詳見 tabs.spec.md 的 overflow 段。
     *   'none'   ★ 預設，不處理，triggers 溢出父容器（適用 tabs 數量可控的情境）
     *   'scroll' 單行橫向滾動 + 邊緣 fade mask（Material / Polaris / iOS 作法）
     *   'menu'   show-all navigator——全部 triggers 一直顯示在底層 overflow-x-auto 捲動容器內,
     *            （Ant Design / Atlassian 作法）
     */
    overflow?: TabsOverflow;
}
declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
declare const tabsTriggerVariants: (props?: ({
    size?: "sm" | "md" | "lg" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
interface TabsTriggerProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {
    /** 左側 icon（LucideIcon） */
    startIcon?: LucideIcon;
    /** 右側 badge（通常是計數指示器） */
    badge?: React.ReactNode;
    /**
     * 右側純視覺 indicator(LucideIcon)。**僅限方向 / 狀態 indicator**:ChevronDown / Pin / Star。
     * **不要拼 click 行為** — endIcon 是 tab body 的一部分,點到也是切 tab。
     * 需要「點該後綴開 dropdown / menu」場景請用 `inlineAction` slot(2026-05-21 拆分)。
     */
    endIcon?: LucideIcon;
    /**
     * Inline action slot(2026-05-21 v3 加,per user「圖一 後綴應該是 inline action」+「點擊
     * 該 tab 的 inline action 跟其他地方應該不同反應」directive):
     * 提供 `<ItemInlineAction>` / `<DropdownMenuTrigger asChild><ItemInlineAction ... /></DropdownMenuTrigger>`
     * 等獨立 click target。**TabsTrigger 自動 stopPropagation**,inline action 點擊不冒泡到 tab body,
     * 達成 split-click 行為(對齊 GitHub「Code ▾」/ Linear "Triage..." menu / Atlassian split-tab 共識)。
     *
     * 跟 endIcon 區別:endIcon = 純視覺 indicator(無獨立行為,連同 tab 一起 click),
     * inlineAction = 獨立 click target(自己的 handler,不切 tab)。語意分家明確。
     */
    inlineAction?: React.ReactNode;
}
declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
declare const TabsContent: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
export declare const tabsMeta: {
    readonly component: "Tabs";
    readonly family: null;
    readonly variants: {};
    readonly sizes: {
        readonly sm: {
            readonly fieldHeight: 32;
            readonly iconSize: 16;
            readonly typography: "body";
        };
        readonly md: {
            readonly fieldHeight: 40;
            readonly iconSize: 16;
            readonly typography: "body";
        };
        readonly lg: {
            readonly fieldHeight: 48;
            readonly iconSize: 20;
            readonly typography: "body-lg";
        };
    };
    readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
    readonly tokens: {
        readonly bg: readonly ["bg-primary-hover", "bg-transparent"];
        readonly fg: readonly ["text-fg-disabled", "text-fg-secondary", "text-foreground"];
        readonly ring: readonly ["ring-ring"];
    };
    readonly defaultSize: "sm";
};
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsTriggerVariants };
export type { TabsSize, TabsListProps, TabsTriggerProps };
//# sourceMappingURL=tabs.d.ts.map