From f04c9e5d45d3e057a4dd9e65aac8097e91f1c315 Mon Sep 17 00:00:00 2001 From: Evan Gray <56235822+evan-gray@users.noreply.github.com> Date: Sun, 15 Aug 2021 15:06:06 -0400 Subject: [PATCH] bridge_ui: routes, nav, bg Change-Id: I0e4509abfb720dc6e6ee0bf31b244ea36465837d --- bridge_ui/package-lock.json | 228 +++++++++++++++++++- bridge_ui/package.json | 6 +- bridge_ui/src/App.js | 72 ++++++- bridge_ui/src/components/RadialGradient.tsx | 32 +++ bridge_ui/src/icons/wormhole.svg | 34 ++- bridge_ui/src/images/hole.svg | 14 ++ bridge_ui/src/index.js | 9 +- bridge_ui/src/muiTheme.js | 1 + 8 files changed, 361 insertions(+), 35 deletions(-) create mode 100644 bridge_ui/src/components/RadialGradient.tsx create mode 100644 bridge_ui/src/images/hole.svg diff --git a/bridge_ui/package-lock.json b/bridge_ui/package-lock.json index 207078b3..81892c0a 100644 --- a/bridge_ui/package-lock.json +++ b/bridge_ui/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@improbable-eng/grpc-web": "^0.13.0", "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.11.2", "@metamask/detect-provider": "^1.2.0", "@project-serum/sol-wallet-adapter": "^0.2.5", "@reduxjs/toolkit": "^1.6.1", @@ -20,10 +21,10 @@ "@typechain/ethers-v5": "^7.0.1", "bridge": "file:rust_modules\\core", "ethers": "^5.4.1", - "prettier": "^2.3.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-redux": "^7.2.4", + "react-router-dom": "^5.2.0", "react-scripts": "4.0.3", "redux": "^3.7.2", "token-bridge": "file:rust_modules\\token" @@ -33,6 +34,7 @@ "@openzeppelin/contracts": "^4.2.0", "@truffle/hdwallet-provider": "^1.4.1", "copy-dir": "^1.3.0", + "prettier": "^2.3.2", "truffle": "^5.4.1", "wasm-loader": "^1.3.0" } @@ -4853,6 +4855,28 @@ } } }, + "node_modules/@material-ui/icons": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", + "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", + "dependencies": { + "@babel/runtime": "^7.4.4" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@material-ui/core": "^4.0.0", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@material-ui/styles": { "version": "4.11.4", "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", @@ -18006,6 +18030,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -24225,6 +24262,19 @@ "dom-walk": "^0.1.0" } }, + "node_modules/mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/mini-css-extract-plugin": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", @@ -30199,6 +30249,61 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/react-router/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/react-router/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/react-scripts": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz", @@ -31101,6 +31206,11 @@ "node": ">=8" } }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -35576,6 +35686,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, "node_modules/value-or-promise": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", @@ -35735,6 +35850,7 @@ "resolved": "https://registry.npmjs.org/wasm-dce/-/wasm-dce-1.0.2.tgz", "integrity": "sha512-Fq1+nu43ybsjSnBquLrW/cULmKs61qbv9k8ep13QUe0nABBezMoNAA+j6QY66MW0/eoDVDp1rjXDqQ2VKyS/Xg==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.0.0-beta.39", "@babel/traverse": "^7.0.0-beta.39", @@ -35748,6 +35864,7 @@ "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", "dev": true, + "peer": true, "bin": { "babylon": "bin/babylon.js" }, @@ -36583,6 +36700,7 @@ "resolved": "https://registry.npmjs.org/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz", "integrity": "sha512-TUf1H++8U10+stJbFydnvrpG5Sznz5Rilez/oZlV5zI0C/e4cSxd8rALAJ8VpTvjVWxLmL3SVSJUK6Ap9AoiNg==", "dev": true, + "peer": true, "engines": { "node": "*" } @@ -36592,6 +36710,7 @@ "resolved": "https://registry.npmjs.org/webassembly-interpreter/-/webassembly-interpreter-0.0.30.tgz", "integrity": "sha512-+Jdy2piEvz9T5j751mOE8+rBO12p+nNW6Fg4kJZ+zP1oUfsm+151sbAbM8AFxWTURmWCGP+r8Lxwfv3pzN1bCQ==", "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0-beta.36", "long": "^3.2.0", @@ -36611,6 +36730,7 @@ "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", "dev": true, + "peer": true, "engines": { "node": ">=0.6" } @@ -42221,6 +42341,14 @@ "react-transition-group": "^4.4.0" } }, + "@material-ui/icons": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", + "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", + "requires": { + "@babel/runtime": "^7.4.4" + } + }, "@material-ui/styles": { "version": "4.11.4", "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", @@ -46625,7 +46753,6 @@ "dev": true, "optional": true, "requires": { - "bitcore-lib": "^8.25.10", "unorm": "^1.4.1" } }, @@ -53059,6 +53186,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -58018,6 +58158,15 @@ "dom-walk": "^0.1.0" } }, + "mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "requires": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + } + }, "mini-css-extract-plugin": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", @@ -62912,6 +63061,57 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, "react-scripts": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz", @@ -63648,6 +63848,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -67283,6 +67488,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, "value-or-promise": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", @@ -67419,6 +67629,7 @@ "resolved": "https://registry.npmjs.org/wasm-dce/-/wasm-dce-1.0.2.tgz", "integrity": "sha512-Fq1+nu43ybsjSnBquLrW/cULmKs61qbv9k8ep13QUe0nABBezMoNAA+j6QY66MW0/eoDVDp1rjXDqQ2VKyS/Xg==", "dev": true, + "peer": true, "requires": { "@babel/core": "^7.0.0-beta.39", "@babel/traverse": "^7.0.0-beta.39", @@ -67431,7 +67642,8 @@ "version": "7.0.0-beta.47", "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", - "dev": true + "dev": true, + "peer": true } } }, @@ -67441,8 +67653,7 @@ "integrity": "sha512-R4s75XH+o8qM+WaRrAU9S2rbAMDzob18/S3V8R9ZoFpZkPWLAohWWlzWAp1ybeTkOuuku/X1zJtxiV0pBYxZww==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "wasm-dce": "^1.0.0" + "loader-utils": "^1.1.0" }, "dependencies": { "json5": { @@ -68164,13 +68375,15 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz", "integrity": "sha512-TUf1H++8U10+stJbFydnvrpG5Sznz5Rilez/oZlV5zI0C/e4cSxd8rALAJ8VpTvjVWxLmL3SVSJUK6Ap9AoiNg==", - "dev": true + "dev": true, + "peer": true }, "webassembly-interpreter": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/webassembly-interpreter/-/webassembly-interpreter-0.0.30.tgz", "integrity": "sha512-+Jdy2piEvz9T5j751mOE8+rBO12p+nNW6Fg4kJZ+zP1oUfsm+151sbAbM8AFxWTURmWCGP+r8Lxwfv3pzN1bCQ==", "dev": true, + "peer": true, "requires": { "@babel/code-frame": "^7.0.0-beta.36", "long": "^3.2.0", @@ -68181,7 +68394,8 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true + "dev": true, + "peer": true } } }, diff --git a/bridge_ui/package.json b/bridge_ui/package.json index 030a3689..64f2de38 100644 --- a/bridge_ui/package.json +++ b/bridge_ui/package.json @@ -5,6 +5,7 @@ "dependencies": { "@improbable-eng/grpc-web": "^0.13.0", "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.11.2", "@metamask/detect-provider": "^1.2.0", "@project-serum/sol-wallet-adapter": "^0.2.5", "@reduxjs/toolkit": "^1.6.1", @@ -17,6 +18,7 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-redux": "^7.2.4", + "react-router-dom": "^5.2.0", "react-scripts": "4.0.3", "redux": "^3.7.2", "token-bridge": "file:rust_modules\\token" @@ -52,8 +54,8 @@ "@openzeppelin/contracts": "^4.2.0", "@truffle/hdwallet-provider": "^1.4.1", "copy-dir": "^1.3.0", + "prettier": "^2.3.2", "truffle": "^5.4.1", - "wasm-loader": "^1.3.0", - "prettier": "^2.3.2" + "wasm-loader": "^1.3.0" } } diff --git a/bridge_ui/src/App.js b/bridge_ui/src/App.js index d0d37d1e..aee9259b 100644 --- a/bridge_ui/src/App.js +++ b/bridge_ui/src/App.js @@ -1,13 +1,23 @@ -import { AppBar, makeStyles, Toolbar } from "@material-ui/core"; +import { + AppBar, + Hidden, + IconButton, + Link, + makeStyles, + Toolbar, +} from "@material-ui/core"; +import { GitHub, Publish, Send } from "@material-ui/icons"; +import { NavLink, Redirect, Route, Switch } from "react-router-dom"; import Attest from "./components/Attest"; import Transfer from "./components/Transfer"; import wormholeLogo from "./icons/wormhole.svg"; const useStyles = makeStyles((theme) => ({ appBar: { - borderBottom: `.5px solid ${theme.palette.divider}`, + borderBottom: `1px solid ${theme.palette.divider}`, "& > .MuiToolbar-root": { margin: "auto", + height: 69, width: "100%", maxWidth: 1100, }, @@ -17,8 +27,15 @@ const useStyles = makeStyles((theme) => ({ width: "100vw", }, link: { + ...theme.typography.body1, color: theme.palette.text.primary, marginLeft: theme.spacing(6), + [theme.breakpoints.down("xs")]: { + marginLeft: theme.spacing(2), + }, + "&.active": { + color: theme.palette.secondary.light, + }, }, content: { [theme.breakpoints.up("sm")]: { @@ -36,13 +53,58 @@ function App() { <> - Wormhole Logo + Wormhole Logo
+ +
+ + Transfer + + + Attest + + + + +
+
+ + + + + + + +
- - + + + + + + + + + + +
); diff --git a/bridge_ui/src/components/RadialGradient.tsx b/bridge_ui/src/components/RadialGradient.tsx new file mode 100644 index 00000000..cf39f227 --- /dev/null +++ b/bridge_ui/src/components/RadialGradient.tsx @@ -0,0 +1,32 @@ +import { makeStyles } from "@material-ui/core"; +import hole from "../images/hole.svg"; + +const useStyles = makeStyles((theme) => ({ + root: { + position: "fixed", + top: 0, + right: 0, + bottom: 0, + left: 0, + background: `radial-gradient(100% 100% at 100% 125%,${theme.palette.secondary.dark} 0,rgba(255,255,255,0) 100%)`, + }, + hole: { + position: "fixed", + bottom: 0, + right: 0, + opacity: 0.3, + filter: "blur(1px)", + }, +})); + +const RadialGradient = () => { + const classes = useStyles(); + return ( + <> + +
+ + ); +}; + +export default RadialGradient; diff --git a/bridge_ui/src/icons/wormhole.svg b/bridge_ui/src/icons/wormhole.svg index e6420cdf..1a509677 100644 --- a/bridge_ui/src/icons/wormhole.svg +++ b/bridge_ui/src/icons/wormhole.svg @@ -1,20 +1,16 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/bridge_ui/src/images/hole.svg b/bridge_ui/src/images/hole.svg new file mode 100644 index 00000000..32134fc5 --- /dev/null +++ b/bridge_ui/src/images/hole.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bridge_ui/src/index.js b/bridge_ui/src/index.js index 3078f230..2be6801f 100644 --- a/bridge_ui/src/index.js +++ b/bridge_ui/src/index.js @@ -2,19 +2,24 @@ import { CssBaseline } from "@material-ui/core"; import { ThemeProvider } from "@material-ui/core/styles"; import ReactDOM from "react-dom"; import { Provider } from "react-redux"; +import { HashRouter } from "react-router-dom"; import App from "./App"; -import { store } from "./store"; +import RadialGradient from "./components/RadialGradient"; import { EthereumProviderProvider } from "./contexts/EthereumProviderContext"; import { SolanaWalletProvider } from "./contexts/SolanaWalletContext.tsx"; import { theme } from "./muiTheme"; +import { store } from "./store"; ReactDOM.render( + - + + + diff --git a/bridge_ui/src/muiTheme.js b/bridge_ui/src/muiTheme.js index 4733bc1a..40d8a609 100644 --- a/bridge_ui/src/muiTheme.js +++ b/bridge_ui/src/muiTheme.js @@ -14,6 +14,7 @@ export const theme = responsiveFontSizes( }, secondary: { main: "rgb(0,239,216,0.8)", // #00EFD8 + light: "rgb(51, 242, 223, 1)", }, error: { main: "#FD3503",