UNPKG

@clubmed/trident-ui

Version:

Shared ClubMed React UI components

53 lines (52 loc) 1.74 kB
import { Dispatch, PropsWithChildren, RefObject } from 'react'; type RefTab<T extends HTMLElement = HTMLElement> = RefObject<T>; type RefTabs<T extends HTMLElement = HTMLElement> = Map<number, RefTab<T>>; type TabsUpdateAction = { type: 'update'; payload: number; }; type TabsRegisterAction<T extends HTMLElement = HTMLElement> = { type: 'register'; payload: { value: number; ref: RefObject<T>; }; }; type TabsUnregisterAction = { type: 'unregister'; payload: { value: number; }; }; type TabsAction<T extends HTMLElement = HTMLElement> = { type: 'start' | 'end' | 'previous' | 'next'; } | TabsUpdateAction | TabsRegisterAction<T> | TabsUnregisterAction; interface TabsState<T extends HTMLElement = HTMLElement> { uid: string; value: number; refs: RefTabs<T>; } interface TabControl<T extends HTMLElement = HTMLElement> extends TabsState<T> { uid: string; value: number; refs: RefTabs<T>; dispatch: Dispatch<TabsAction>; register: (value: number, ref: RefTab<T>) => void; unregister: (value: number) => void; } export declare const TabControlContext: import('react').Context<TabControl<HTMLElement>>; export interface TabsProviderProps { selected?: number; /** * The selected tab value * @deprecated Min props as no effect on the Tabs component and will be removed in future versions */ min?: number; /** * The selected tab value * @deprecated Max props as no effect on the Tabs component and will be removed in future versions */ max?: number; } export declare function TabsProvider({ selected, children }: PropsWithChildren<TabsProviderProps>): import("react/jsx-runtime").JSX.Element; export {};