UNPKG

1.79 kBTypeScriptView Raw
1import * as React from 'react';
2import {
3 StyledFn,
4 StyletronComponent,
5 StyletronComponentInjectedProps,
6} from 'styletron-react';
7import {Override} from '../overrides';
8
9export interface KIND {
10 primary: 'primary';
11 secondary: 'secondary';
12 tertiary: 'tertiary';
13 minimal: 'minimal';
14}
15
16export interface SIZE {
17 compact: 'compact';
18 default: 'default';
19 large: 'large';
20 mini: 'mini';
21}
22
23export interface SHAPE {
24 default: 'default';
25 pill: 'pill';
26 round: 'round';
27 circle: 'circle';
28 square: 'square';
29}
30
31export interface ButtonOverrides {
32 Root?: Override<any>;
33 BaseButton?: Override<any>;
34 StartEnhancer?: Override<any>;
35 EndEnhancer?: Override<any>;
36 LoadingSpinnerContainer?: Override<any>;
37 LoadingSpinner?: Override<any>;
38}
39
40export interface ButtonProps
41 extends StyletronComponentInjectedProps<ButtonProps> {
42 href?: string;
43 target?: string;
44 children?: React.ReactNode;
45 disabled?: boolean;
46 endEnhancer?: React.ReactNode;
47 isLoading?: boolean;
48 isSelected?: boolean;
49 kind?: KIND[keyof KIND];
50 onClick?: (event: React.MouseEvent<HTMLButtonElement>) => any;
51 overrides?: ButtonOverrides;
52 shape?: SHAPE[keyof SHAPE];
53 size?: SIZE[keyof SIZE];
54 startEnhancer?: React.ReactNode;
55 type?: 'submit' | 'reset' | 'button';
56}
57
58export const StyledBaseButton: StyletronComponent<any>;
59export const StyledStartEnhancer: StyletronComponent<any>;
60export const StyledEndEnhancer: StyletronComponent<any>;
61export const StyledLoadingSpinner: StyletronComponent<any>;
62export const StyledLoadingSpinnerContainer: StyletronComponent<any>;
63
64export const Button: React.ForwardRefExoticComponent<
65 React.PropsWithoutRef<ButtonProps> & React.RefAttributes<HTMLButtonElement>
66>;
67
68export const KIND: KIND;
69export const SHAPE: SHAPE;
70export const SIZE: SIZE;