import { type ElementType, type HTMLProps } from 'react';
import { type ChildrenProps, type ClickEvents, type SpacingProp, type SpiritPolymorphicElementPropsWithRef, type StyleProps, type TransferProps } from './shared';
export type TabId = string | number;
export type TabListProps = ChildrenProps & TransferProps;
export interface TabsOnSelectionChange {
onSelectionChange?: (previousId: TabId, currentId?: TabId) => void;
}
export interface TabItemProps extends ChildrenProps, TransferProps, ClickEvents {
forTabPane: TabId;
}
export interface SpiritTabsProps extends SpacingProp {
selectedId?: TabId;
id?: TabId;
forTabPane?: TabId;
}
export interface TabsProps extends ChildrenProps, SpacingProp, TransferProps, TabsOnSelectionChange {
selectedTab: TabId;
toggle: TabsToggler;
}
export type TabLinkItemProps = StyleProps & HTMLProps;
export interface TabLinkBaseProps extends ChildrenProps, StyleProps, TransferProps {
itemProps?: TabLinkItemProps;
}
export type TabLinkProps = {
elementType?: E;
} & TabLinkBaseProps;
export type SpiritTabLinkProps = TabLinkProps & SpiritPolymorphicElementPropsWithRef>;
export type TabsToggler = (id: TabId) => void;
export interface TabsContextType extends SpacingProp, TabsOnSelectionChange {
selectedId: TabId;
selectTab: TabsToggler;
}
export interface TabPaneProps extends ChildrenProps, TransferProps {
id: TabId;
}
export type TabContentProps = ChildrenProps & TransferProps;
export interface UncontrolledTabsProps extends ChildrenProps, SpacingProp, TransferProps, TabsOnSelectionChange {
defaultSelectedTab: TabId;
}