diff --git a/package.json b/package.json index b55f9e2..3dcf799 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,10 @@ "repository": "github:phosphor-icons/phosphor-home", "private": true, "dependencies": { + "@types/braintree-web": "^3.75.3", + "@types/braintree-web-drop-in": "^1.22.3", + "braintree-web": "^3.78.2", + "braintree-web-drop-in": "^1.30.1", "file-saver": "^2.0.2", "framer-motion": "^3.10.0", "fuse.js": "^6.4.1", diff --git a/src/components/App/App.css b/src/components/App/App.css index 2dc97d2..d076926 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -49,6 +49,7 @@ button { justify-content: flex-start; } +input.main-button, button.main-button { height: 64px; padding: 0 48px 0 40px; @@ -72,19 +73,29 @@ button.main-button { margin: 0 24px 24px 0; } +input.main-button:active, button.main-button:active { transform: translate(4px, 4px); box-shadow: 0 0 0 0 black; } +input.main-button:focus, button.main-button:focus { outline: none; } +input.main-button:disabled, +button.main-button:disabled { + border: 2px solid gray; + box-shadow: 4px 4px 0 0 gray; + cursor: not-allowed; +} + /* button.main-button:not(:last-child) { margin: 0 24px 24px 0; } */ +input.main-button, button.main-button svg { margin-right: 12px; } @@ -114,3 +125,55 @@ a.main-link:after { a.main-link:hover:after { width: 0%; } + +button.text-button { + display: flex; + align-items: center; + padding: 8px; + background-color: transparent; + font-size: 16px; + cursor: pointer; + border-radius: 8px; +} + +button.text-button svg { + margin: 8px; +} + +.radio-group { + display: flex; + flex-flow: row wrap; + justify-content: space-around; + row-gap: 16px; +} + +.radio-button input[type="radio"] { + display: none; +} + +.radio-button label { + display: inline-block; + padding: 8px; + min-width: 50px; + background-color: white; + border-radius: 8px; + border: 2px solid black; + font-weight: bold; + cursor: pointer; + text-align: center; + user-select: none; +} + +.radio-button label:hover { + background-color: #E0E0E0; +} + +.radio-button input[type="radio"]:checked + label { + color: white; + background-color: black; + +} + +.radio-button label input { + margin-left: 8px; +} \ No newline at end of file diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx index 4bfd6e9..d426e3e 100644 --- a/src/components/App/App.tsx +++ b/src/components/App/App.tsx @@ -2,6 +2,7 @@ import React, { Suspense } from "react"; import "./App.css"; import Header from "../Header/Header"; +import Modal from "../Modal/Modal"; import Toolbar from "../Toolbar/Toolbar"; import IconGrid from "../IconGrid/IconGrid"; import Footer from "../Footer/Footer"; @@ -10,6 +11,7 @@ import Notice from "../Notice/Notice"; import useIconParameters from "../../hooks/useIconParameters"; const errorFallback = ; +const paymentFallback = ; const waitingFallback = ; const App: React.FC = () => { @@ -26,6 +28,9 @@ const App: React.FC = () => { + + +