-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathButton.tsx
More file actions
49 lines (46 loc) · 1.09 KB
/
Button.tsx
File metadata and controls
49 lines (46 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import classNames from 'classnames';
import React from 'react';
import Spinner from '../Spinner/Spinner';
interface Props {
type?: 'button' | 'submit' | 'reset';
className?: string;
onClick?: (e?: any) => void;
children?: React.ReactNode;
disabled?: boolean;
isSubmitting?: boolean;
trailingIcon?: React.ReactNode;
}
const Button: React.FC<Props> = ({
type,
className,
children,
onClick,
disabled,
isSubmitting,
trailingIcon,
}) => (
<button
type={type}
onClick={onClick}
disabled={disabled}
className={classNames(
'h-full w-full bg-blue-500',
'inline-flex relative',
'rounded-lg',
'justify-center',
'items-center',
'focus:outline-none',
'transition ease-in-out',
'duration-150',
disabled ? 'pointer-events-none opacity-50' : '',
className
)}
>
<div className='flex h-full py-1'>
{isSubmitting && <Spinner size='xs' border='border-white-300' />}
{!isSubmitting && children}
{!isSubmitting && trailingIcon && trailingIcon}
</div>
</button>
);
export default React.memo(Button);