UNPKG

2.32 kBTypeScriptView Raw
1import * as React from 'react';
2import {StyletronComponent} from 'styletron-react';
3import {Override} from '../overrides';
4
5export interface ORIENTATION {
6 horizontal: 'horizontal';
7 vertical: 'vertical';
8}
9export interface STATE_CHANGE_TYPE {
10 change: 'change';
11}
12
13export interface State {
14 activeKey: React.Key;
15}
16
17export type StateReducer = (
18 stateChangeType: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE],
19 nextState: State,
20 currentState: State,
21) => State;
22
23export interface TabsOverrides<T> {
24 Root?: Override<T>;
25 TabBar?: Override<T>;
26 TabContent?: Override<T>;
27 Tab?: Override<T>;
28}
29
30export interface TabsProps {
31 children: React.ReactNode;
32 activeKey?: React.Key;
33 disabled?: boolean;
34 renderAll?: boolean;
35 onChange?: (args: {activeKey: React.Key}) => any;
36 orientation?: ORIENTATION[keyof ORIENTATION];
37 overrides?: TabsOverrides<SharedProps & {$active?: boolean}>;
38}
39
40export const Tabs: React.FC<TabsProps>;
41
42export type StatefulTabsProps = TabsProps & {
43 activeKey?: never;
44 renderAll?: boolean;
45 initialState?: State;
46 stateReducer?: StateReducer;
47};
48
49export class StatefulTabs extends React.Component<StatefulTabsProps, State> {
50 onTabChange(newState: State): void;
51 internalSetState(
52 type: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE],
53 changes: State,
54 ): void;
55 getInitialKey(): any;
56}
57
58export interface TabOverrides<T> {
59 Tab?: Override<T>;
60}
61
62export interface SharedProps {
63 $disabled?: boolean;
64 $active?: boolean;
65 $orientation?: ORIENTATION[keyof ORIENTATION];
66}
67
68export interface TabProps {
69 children?: React.ReactNode;
70 disabled?: boolean;
71 active?: boolean;
72 key?: React.Key;
73 onClick?: (e: Event) => any;
74 onKeyDown?: (e: KeyboardEvent) => any;
75 onSelect?: () => any;
76 overrides?: TabOverrides<SharedProps>;
77 title?: React.ReactNode;
78 id?: string;
79 $orientation?: ORIENTATION[keyof ORIENTATION];
80}
81
82export class Tab extends React.Component<TabProps> {
83 onClick(e: Event): void;
84 onKeyDown(e: KeyboardEvent): void;
85 getSharedProps(): SharedProps;
86}
87
88export const StyledRoot: StyletronComponent<any>;
89export const StyledTab: StyletronComponent<any>;
90export const StyledTabBar: StyletronComponent<any>;
91export const StyledTabContent: StyletronComponent<any>;
92
93export const ORIENTATION: ORIENTATION;
94export const STATE_CHANGE_TYPE: STATE_CHANGE_TYPE;