summaryrefslogtreecommitdiff
path: root/src/components/Button.tsx
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2021-03-14 05:43:24 +0300
committereug-vs <eug-vs@keemail.me>2021-03-14 05:43:24 +0300
commit8e907e75ea1efa555ba66332b73d2f54283331c6 (patch)
treef7879bf46b0bb82b37e77eb827eb2ca3b9fa8211 /src/components/Button.tsx
parentfcf3c87195e9e58af9c2c4f2ae45b2a03c8d2677 (diff)
downloadcommercel-ui-8e907e75ea1efa555ba66332b73d2f54283331c6.tar.gz
feat: add Input component
Diffstat (limited to 'src/components/Button.tsx')
-rw-r--r--src/components/Button.tsx28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
index bf98755..b715ba9 100644
--- a/src/components/Button.tsx
+++ b/src/components/Button.tsx
@@ -1,14 +1,13 @@
import React, { useCallback } from 'react';
import { useHistory } from 'react-router-dom';
-export type Props = Partial<{
- onClick: () => void;
- route: string;
- variant: 'contained' | 'outlined';
- size: 'sm' | 'md' | 'lg';
- children: string;
-}>
-
+export interface Props extends React.ButtonHTMLAttributes<HTMLButtonElement> {
+ onClick?: () => void;
+ route?: string;
+ variant?: 'contained' | 'outlined';
+ size?: 'sm' | 'md' | 'lg';
+ children?: string;
+}
const variants = {
contained: 'bg-black text-white',
@@ -21,18 +20,19 @@ const sizes = {
sm: 'p-3',
};
-const Button: React.FC<Props> = ({ onClick, route, variant = 'contained', size = 'md', children }) => {
+const style = 'm-3 font-bold tracking-wide hover:underline focus:outline-none border-2 border-black';
+
+const Button: React.FC<Props> = ({ onClick, route, variant = 'contained', size = 'md', type = 'button', ...props }) => {
const history = useHistory();
const navigateRoute = useCallback(() => history.push(route || '/'), [route, history]);
return (
<button
- type="button"
+ type={type}
onClick={route ? navigateRoute : onClick}
- className={`m-3 font-bold tracking-wide hover:underline focus:outline-none border-2 border-black ${variants[variant]} ${sizes[size]}`}
- >
- {children}
- </button>
+ className={`${style} ${variants[variant]} ${sizes[size]}`}
+ {...props}
+ />
);
};