import type { ReactNode } from 'react'; /** * A row of tabs. Ship's Tabs (2026-09-01), which was Peek's TopicTabs with * the topic-specific ids taken out; on Base UI Tabs since stage 1 of the * migration (2026-09-06), which is where the keyboard comes from: one Tab * stop for the row, arrow keys between the tabs. * * A selected tab is a neutral fill (bg-active), not the accent tint — * Katerina's ruling (2026-08-27), extended to every app (2026-09-01). Two * sizes: `default` is 14px, a little more room; `small` is Peek's own * geometry (its inline `fontSize: 12` was the caption token spelled by hand). * * A tab's count is the sidebar's number, not a chip (Katerina, 2026-09-01, * superseding the chip ruling of 2026-08-26): mono, caption size, muted, * tabular — the one way a number sits beside a label everywhere. A count of * `0` is still drawn ("Assigned to me 0" is an answer); an absent count draws * nothing. */ export interface TabDef { id: T; label: string; /** Shown as a muted mono number after the label. Absent draws nothing; 0 is drawn. */ count?: number; /** 16px, stroke 1.5. */ icon?: ReactNode; /** Something new behind this tab: the `UnreadDot` after the label, and "new" in the tab's accessible name. */ unread?: boolean; } export interface TabsProps { tabs: TabDef[]; active: T; onChange: (id: T) => void; /** `default` 14px; `small` 12px, the denser geometry. */ size?: 'default' | 'small'; /** * Names the row for assistive tech — "Views", "Filters". * * A `tablist` with no name is announced as a bare "tab list", which says * nothing and says the same nothing twice on a page with two of them * (measured 2026-09-08: no name, and no way to give one). Where a visible * heading already names it, point at that with `aria-labelledby` instead. */ 'aria-label'?: string; 'aria-labelledby'?: string; /** Lands on the outer box, around the row. */ className?: string; } export declare function Tabs({ tabs, active, onChange, size, className, ...aria }: TabsProps): import("react").JSX.Element; //# sourceMappingURL=Tabs.d.ts.map