import { ReactNode } from 'react'; import { TabItem } from './types'; /** * Groups tabs by content and concatenates labels for tabs with identical content. * Maximum 3 items can be concatenated. * * @param tabs - Array of tab items to process * @returns Processed tabs with concatenation applied */ export declare const processTabsWithConcatenation: (tabs: TabItem[]) => TabItem[]; /** * Sorts tabs to ensure default tabs appear first */ export declare const sortTabsByDefault: (tabs: TabItem[]) => TabItem[]; /** * Filters available items that haven't been added as tabs yet */ export declare const getAvailableItems: (availableItems: T[], existingTabs: TabItem[]) => T[]; /** * Creates tab items from selected values with shared content */ export declare const createTabsFromSelection: (selectedValues: string[], availableItems: T[], content: ReactNode) => TabItem[]; /** * Prepares items for SingleSelect dropdown (all tabs including scrolled-out) */ export declare const prepareDropdownItems: (tabs: TabItem[], originalItems?: TabItem[]) => { items: { value: string; label: string; }[]; }[]; /** * Returns tabs for display based on isDefault flag and maxDisplayTabs limit. * - Default tabs (isDefault: true) are shown in the list * - Non-default tabs are shown in dropdown * - If maxDisplayTabs is set and there are more default tabs, only maxDisplayTabs are shown in list */ export declare const getDisplayTabs: (tabs: TabItem[], maxDisplayTabs?: number, activeTab?: string) => TabItem[]; /** * Calculates the position and width for the tab indicator */ export declare const calculateTabIndicatorPosition: (tabElement: HTMLButtonElement, listElement: HTMLDivElement) => { tabLeft: number; tabWidth: number; }; /** * Determines if the tab movement is from left to right */ export declare const isMovingRight: (oldTab: HTMLButtonElement, newTab: HTMLButtonElement) => boolean; /** * Calculates transition dimensions for the animated underline */ export declare const calculateTransitionDimensions: (oldTab: HTMLButtonElement, newTab: HTMLButtonElement, listElement: HTMLDivElement) => { left: number; width: number; finalLeft: number; finalWidth: number; }; /** * Determines the actual tab value from a potentially concatenated value * Concatenated tabs use underscore as separator, but we need to distinguish * from single tabs that naturally have underscores in their values */ export declare const getActualTabValue: (processedValue: string, originalTabValues: Set) => string; /** * Checks if a concatenated tab value should trigger multiple close events */ export declare const isConcatenatedTab: (tabValue: string, originalTabValues: Set) => boolean; /** * Extracts original values from a concatenated tab value */ export declare const extractOriginalValues: (concatenatedValue: string) => string[];