import { FC, ReactNode } from 'react';
/**
* Tab Item Interface
*
* Represents a single tab in the tab navigation.
*/
export interface TabItem {
/** Unique identifier for the tab */
id: string;
/** Tab label */
label: string;
/** Optional icon */
icon?: ReactNode;
/** Optional badge (notification count, etc.) */
badge?: string | number;
/** Whether tab is disabled */
disabled?: boolean;
/** Click handler for tab */
onClick?: () => void;
}
/**
* Tabs Props Interface
*
* Generic tab navigation component that accepts all data via props.
* No dependencies on routing libraries - pure presentation component.
*/
export interface TabsProps {
/** Array of tab items */
items: TabItem[];
/** Currently active tab ID */
activeTabId: string;
/** Tab change handler */
onTabChange: (tabId: string) => void;
/** Visual variant */
variant?: 'default' | 'underline' | 'pills';
/** Size variant */
size?: 'sm' | 'md' | 'lg';
/** Whether tabs should fill container width */
fullWidth?: boolean;
/** Additional CSS classes */
className?: string;
}
/**
* Tabs Component
*
* Generic tab navigation for app shells. Pure presentation component
* that accepts all data via props.
*
* Features:
* - Multiple visual variants (default, underline, pills)
* - Active state indication
* - Icon and badge support
* - Disabled tabs
* - Keyboard navigation (arrow keys)
* - Accessible tab navigation
*
* Uses semantic tokens for styling, which must be provided by the shell.
*
* @example
* ```tsx
* },
* { id: 'activity', label: 'Activity', badge: 5 },
* { id: 'settings', label: 'Settings' }
* ]}
* activeTabId={currentTab}
* onTabChange={setCurrentTab}
* variant="underline"
* />
* ```
*/
export declare const Tabs: FC;
//# sourceMappingURL=Tabs.d.ts.map