1 | import * as React from 'react';
|
2 | import {StyletronComponent} from 'styletron-react';
|
3 | import {Override} from '../overrides';
|
4 |
|
5 | export interface ORIENTATION {
|
6 | horizontal: 'horizontal';
|
7 | vertical: 'vertical';
|
8 | }
|
9 | export interface STATE_CHANGE_TYPE {
|
10 | change: 'change';
|
11 | }
|
12 |
|
13 | export interface State {
|
14 | activeKey: React.Key;
|
15 | }
|
16 |
|
17 | export type StateReducer = (
|
18 | stateChangeType: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE],
|
19 | nextState: State,
|
20 | currentState: State,
|
21 | ) => State;
|
22 |
|
23 | export interface TabsOverrides<T> {
|
24 | Root?: Override<T>;
|
25 | TabBar?: Override<T>;
|
26 | TabContent?: Override<T>;
|
27 | Tab?: Override<T>;
|
28 | }
|
29 |
|
30 | export 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 |
|
40 | export const Tabs: React.FC<TabsProps>;
|
41 |
|
42 | export type StatefulTabsProps = TabsProps & {
|
43 | activeKey?: never;
|
44 | renderAll?: boolean;
|
45 | initialState?: State;
|
46 | stateReducer?: StateReducer;
|
47 | };
|
48 |
|
49 | export 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 |
|
58 | export interface TabOverrides<T> {
|
59 | Tab?: Override<T>;
|
60 | }
|
61 |
|
62 | export interface SharedProps {
|
63 | $disabled?: boolean;
|
64 | $active?: boolean;
|
65 | $orientation?: ORIENTATION[keyof ORIENTATION];
|
66 | }
|
67 |
|
68 | export 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 |
|
82 | export class Tab extends React.Component<TabProps> {
|
83 | onClick(e: Event): void;
|
84 | onKeyDown(e: KeyboardEvent): void;
|
85 | getSharedProps(): SharedProps;
|
86 | }
|
87 |
|
88 | export const StyledRoot: StyletronComponent<any>;
|
89 | export const StyledTab: StyletronComponent<any>;
|
90 | export const StyledTabBar: StyletronComponent<any>;
|
91 | export const StyledTabContent: StyletronComponent<any>;
|
92 |
|
93 | export const ORIENTATION: ORIENTATION;
|
94 | export const STATE_CHANGE_TYPE: STATE_CHANGE_TYPE;
|