import { AnchorHTMLAttributes, HTMLAttributes, MouseEvent, ReactNode } from 'react'; import { PropsWithChildren, QA } from '../common'; export type TabProps = { /** Обязательный идентификатор * * Можно использовать любой уникальный в рамках меню int|string|uuid */ value: string; /** Label */ label?: ReactNode; /** Иконка */ icon?: ReactNode; /** Значок */ badge?: ReactNode; /** Отключен * * Не позволяет переход по табу */ disabled?: boolean; } & QA & AnchorHTMLAttributes; export type TabsProps = { /** Выбранный таб */ value?: string; /** Обработчик смены таба * * Если передан, над событиями будет вызван preventDefault (отменяет переход по ссылкам в текущем окне) * * Не будет вызван для * * - disabled табов * * - выбранного таба * * - табов с target не равным undefined | '_self' */ onChange?: ( /** Новый таб */ newValue: string, /** Событие клика | нажатия */ e: MouseEvent) => void; /** Показывать стрелки при overflow */ arrows?: boolean; } & QA & Omit, 'onChange'> & Pick, 'className' | 'children'>; export type TabContextProps = Pick; export type TabListProps = Omit; export type TabPanelProps = Pick & PropsWithChildren;