From 0b78ef504de2fa9f31c7fd901e13876e62051dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Geonizeli?= Date: Sat, 28 Aug 2021 10:27:38 -0300 Subject: [PATCH] add button component --- .../src/components/Button/Button.tsx | 42 +++++++++++++++++++ app/javascript/src/components/Button/index.ts | 1 + app/javascript/src/components/Input/Input.tsx | 2 +- app/javascript/src/components/Input/index.ts | 1 + app/javascript/src/components/index.ts | 2 + .../RemoveStakeModal/RemoveStakeModal.tsx | 11 ++--- .../Home/StakeOrderModal/StakeOrderModal.tsx | 10 ++--- .../Exchange/ExchangePanel/ExchangePanel.tsx | 6 +-- 8 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 app/javascript/src/components/Button/Button.tsx create mode 100644 app/javascript/src/components/Button/index.ts diff --git a/app/javascript/src/components/Button/Button.tsx b/app/javascript/src/components/Button/Button.tsx new file mode 100644 index 0000000..ffb7609 --- /dev/null +++ b/app/javascript/src/components/Button/Button.tsx @@ -0,0 +1,42 @@ +import type { MouseEvent } from "react"; +import React from "react"; +import cn from "classnames"; + +type Props = React.DetailedHTMLProps< + React.ButtonHTMLAttributes, + HTMLButtonElement +> & { + variant?: "primary" | "dangeour"; +}; + +const baseStyles = + "cursor-pointer py-2 px-4 disabled:opacity-50 disabled:cursor-default text-white w-full transition ease-in duration-200 text-center text-base font-semibold shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 rounded-lg"; + +const Component: React.ForwardRefRenderFunction = (props) => { + const { className = "", variant = "primary", onClick, ...rest } = props; + + const handleClick = ( + e: MouseEvent + ) => { + e.stopPropagation(); + + if (onClick) { + onClick(e); + } + }; + + const variantStyle = + variant === "primary" + ? "bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 focus:ring-offset-blue-200" + : "bg-red-600 hover:bg-red-700 focus:ring-red-500 focus:ring-offset-red-200"; + + return ( + + ); diff --git a/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx b/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx index d71cf78..32b634d 100644 --- a/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx +++ b/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx @@ -3,7 +3,7 @@ import React, { useState } from "react"; import { BigNumber } from "bignumber.js"; import { useRelayEnvironment } from "react-relay"; -import { Modal } from "../../../components"; +import { Button, Modal } from "../../../components"; import { commitCreateStakeOrderMutation } from "./createStakeOrder"; import { Input } from "../../../components/Input/Input"; @@ -86,13 +86,9 @@ export const StakeOrderModal: FC = ({ poolName, balance }) => { {avaliableCake.isEqualTo(0) && ( Você não possuí saldo. )} - + diff --git a/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx b/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx index 05f17bb..3bece62 100644 --- a/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx +++ b/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx @@ -11,7 +11,7 @@ import type { ExchangePanel_fiatBalances$key } from "./__generated__/ExchangePan import type { ExchangePanel_balances$key } from "./__generated__/ExchangePanel_balances.graphql"; import { commitCreateSellCryptoOrderMutation } from "./createSellCryptoOrder"; import { commitCreateBuyCryptoOrderMutation } from "./createBuyCryptoOrder"; -import { Input } from "../../../../components/Input/Input"; +import { Input, Button } from "../../../../components"; const tabBaseStyles = "w-full text-base font-bold text-black px-4 py-2 focus:ring-blue-500"; @@ -192,13 +192,13 @@ export const ExchangePanel: FC = ({ )} - + );