react-lightning-design-system
Version:
Salesforce Lightning Design System components built with React
70 lines (69 loc) • 1.88 kB
TypeScript
import React, { FC, ComponentType, HTMLAttributes, ReactElement, ReactNode, Ref } from 'react';
import { DropdownButtonProps } from './DropdownButton';
import { Bivariant } from './typeUtils';
/**
*
*/
type TabKey = string | number;
export type TabType = 'default' | 'scoped';
/**
*
*/
export type TabContentProps = {
active?: boolean;
} & HTMLAttributes<HTMLDivElement>;
/**
*
*/
export type TabMenuProps = DropdownButtonProps;
/**
*
*/
export type TabItemRendererProps = {
type?: TabType;
title?: string;
alt?: string;
menu?: ReactElement;
menuItems?: ReactElement[];
menuIcon?: string;
eventKey?: TabKey;
activeKey?: TabKey;
activeTabRef?: Ref<HTMLAnchorElement>;
children?: ReactNode;
onTabClick?: Bivariant<(eventKey: TabKey) => void>;
onTabKeyDown?: Bivariant<(eventKey: TabKey, e: React.KeyboardEvent<HTMLAnchorElement>) => void>;
tooltip?: ReactNode;
tooltipIcon?: string;
};
/**
*
*/
export type TabItemProps<RendererProps extends TabItemRendererProps> = {
tabItemRenderer?: ComponentType<RendererProps>;
rendererProps?: Omit<RendererProps, keyof TabItemRendererProps>;
} & Omit<TabItemRendererProps, 'type' | 'activeKey' | 'activeTabRef' | 'onTabClick' | 'onTabKeyDown'>;
/**
*
*/
export type TabProps<RendererProps extends TabItemRendererProps> = {
className?: string;
eventKey?: TabKey;
children?: ReactNode;
} & TabItemProps<RendererProps>;
export declare const Tab: <RendererProps extends TabItemRendererProps = TabItemRendererProps>(props: TabProps<RendererProps>) => React.JSX.Element;
/**
*
*/
export type TabsProps = {
className?: string;
type?: TabType;
defaultActiveKey?: TabKey;
activeKey?: TabKey;
children?: ReactNode;
onSelect?: Bivariant<(tabKey: TabKey) => void>;
};
/**
*
*/
export declare const Tabs: FC<TabsProps>;
export {};