From f7db16be0955957230f6f35605973706354de746 Mon Sep 17 00:00:00 2001 From: Ivan Paulovich Date: Sun, 11 Oct 2020 19:59:07 +0200 Subject: [PATCH] React UI updated --- wallet-spa/package-lock.json | 635 ++++++++++++++++++++++++- wallet-spa/package.json | 2 + wallet-spa/src/components/Header.jsx | 131 +++++ wallet-spa/src/components/Layout.jsx | 68 ++- wallet-spa/src/components/SideMenu.jsx | 190 ++++++-- wallet-spa/src/components/TopMenu.js | 59 --- wallet-spa/src/images/material_bg.png | Bin 0 -> 23211 bytes wallet-spa/src/index.jsx | 3 +- wallet-spa/src/pages/Account.jsx | 22 +- wallet-spa/src/styles.js | 24 + wallet-spa/src/styles.scss | 32 ++ wallet-spa/src/theme.js | 67 +++ 12 files changed, 1110 insertions(+), 123 deletions(-) create mode 100644 wallet-spa/src/components/Header.jsx delete mode 100644 wallet-spa/src/components/TopMenu.js create mode 100644 wallet-spa/src/images/material_bg.png create mode 100644 wallet-spa/src/styles.js create mode 100644 wallet-spa/src/styles.scss create mode 100644 wallet-spa/src/theme.js diff --git a/wallet-spa/package-lock.json b/wallet-spa/package-lock.json index 0fbc5998..3a0a644d 100644 --- a/wallet-spa/package-lock.json +++ b/wallet-spa/package-lock.json @@ -2238,6 +2238,11 @@ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==" }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2360,6 +2365,11 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2412,6 +2422,39 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2454,6 +2497,11 @@ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -2573,6 +2621,11 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -3152,6 +3205,14 @@ "file-uri-to-path": "1.0.0" } }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3514,6 +3575,22 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3773,6 +3850,11 @@ "q": "^1.1.2" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -3946,6 +4028,11 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -4418,6 +4505,14 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.2.tgz", "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==" }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -4612,6 +4707,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -6080,6 +6180,11 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, "fontsource-roboto": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fontsource-roboto/-/fontsource-roboto-3.0.3.tgz", @@ -6250,6 +6355,17 @@ "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6260,6 +6376,62 @@ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -6275,6 +6447,11 @@ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -6378,6 +6555,16 @@ } } }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -6466,6 +6653,11 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -6848,6 +7040,11 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -7110,6 +7307,11 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -7234,6 +7436,11 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -7861,6 +8068,11 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8297,6 +8509,15 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lower-case": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", @@ -8359,6 +8580,11 @@ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -8420,6 +8646,129 @@ } } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + } + } + }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -8713,8 +9062,7 @@ "nan": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "optional": true + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" }, "nanomatch": { "version": "1.2.13", @@ -8780,6 +9128,32 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -8890,6 +9264,98 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==" }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -8940,6 +9406,17 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -8953,6 +9430,11 @@ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -9199,11 +9681,25 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-each-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", @@ -10550,6 +11046,11 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -11314,6 +11815,14 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -11602,6 +12111,17 @@ "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, "sass-loader": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", @@ -11671,6 +12191,25 @@ "ajv-keywords": "^3.4.1" } }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -12277,6 +12816,38 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -12643,6 +13214,16 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "terser": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", @@ -12921,6 +13502,19 @@ "punycode": "^2.1.0" } }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "requires": { + "glob": "^7.1.2" + } + }, "ts-pnp": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", @@ -13840,6 +14434,43 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/wallet-spa/package.json b/wallet-spa/package.json index c9039865..26c3e414 100644 --- a/wallet-spa/package.json +++ b/wallet-spa/package.json @@ -11,8 +11,10 @@ "@types/node": "^14.11.2", "axios": "^0.19.0", "bootstrap": "^4.3.1", + "font-awesome": "^4.7.0", "fontsource-roboto": "^3.0.3", "jquery": "^3.4.1", + "node-sass": "^4.14.1", "oidc-client": "^1.8.2", "react": "^16.13.1", "react-dom": "^16.13.1", diff --git a/wallet-spa/src/components/Header.jsx b/wallet-spa/src/components/Header.jsx new file mode 100644 index 00000000..0e8546f2 --- /dev/null +++ b/wallet-spa/src/components/Header.jsx @@ -0,0 +1,131 @@ +import React from "react"; +import classNames from "classnames" +import AppBar from "@material-ui/core/AppBar"; +import Toolbar from "@material-ui/core/Toolbar"; +import IconButton from "@material-ui/core/IconButton"; +import MenuIcon from '@material-ui/icons/Menu'; +import PropTypes from "prop-types" +import { withStyles } from "@material-ui/core/styles"; +import { fade } from "@material-ui/core/styles/colorManipulator" + +const styles = (theme) => ({ + appBar: { + zIndex: theme.zIndex.drawer + 1, + transition: theme.transitions.create(["width", "margin"], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + }, + appBarShift: { + // marginLeft: theme.drawer.width, + width: `calc(100% - ${theme.drawer.width}px)`, + transition: theme.transitions.create(["width", "margin"], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen, + }), + }, + root: { + width: "100%", + }, + grow: { + flexGrow: 1, + }, + menuButton: { + marginLeft: -12, + marginRight: 20, + }, + title: { + display: "none", + [theme.breakpoints.up("sm")]: { + display: "block", + }, + }, + search: { + position: "relative", + borderRadius: theme.shape.borderRadius, + backgroundColor: fade(theme.palette.common.white, 0.15), + "&:hover": { + backgroundColor: fade(theme.palette.common.white, 0.25), + }, + marginRight: theme.spacing.unit * 2, + marginLeft: 0, + width: "100%", + [theme.breakpoints.up("sm")]: { + marginLeft: theme.spacing.unit * 3, + width: "auto", + }, + }, + searchIcon: { + width: theme.spacing.unit * 9, + height: "100%", + position: "absolute", + pointerEvents: "none", + display: "flex", + alignItems: "center", + justifyContent: "center", + }, + inputRoot: { + color: "inherit", + width: "100%", + }, + inputInput: { + paddingTop: theme.spacing.unit, + paddingRight: theme.spacing.unit, + paddingBottom: theme.spacing.unit, + paddingLeft: theme.spacing.unit * 10, + transition: theme.transitions.create("width"), + width: "100%", + [theme.breakpoints.up("md")]: { + width: 200, + }, + }, + sectionDesktop: { + display: "none", + [theme.breakpoints.up("md")]: { + display: "flex", + }, + }, + sectionMobile: { + display: "flex", + [theme.breakpoints.up("md")]: { + display: "none", + }, + }, +}) + +class Header extends React.Component { + + constructor(props) { + super(props) + } + + render() { + + const { handleChangeNavDrawer, navDrawerOpen, classes } = this.props + + return ( + + + + + + + + ); + } +} + +Header.propTypes = { + styles: PropTypes.object, + handleChangeNavDrawer: PropTypes.func, + classes: PropTypes.object, + navDrawerOpen: PropTypes.bool, +} +export default withStyles(styles)(Header) \ No newline at end of file diff --git a/wallet-spa/src/components/Layout.jsx b/wallet-spa/src/components/Layout.jsx index 569a374a..d2cf07aa 100644 --- a/wallet-spa/src/components/Layout.jsx +++ b/wallet-spa/src/components/Layout.jsx @@ -1,33 +1,81 @@ import React from 'react'; import PropTypes from 'prop-types'; import { withStyles } from '@material-ui/styles'; -import TopMenu from "../components/TopMenu"; +import Header from "./Header"; import SideMenu from "../components/SideMenu"; import Footer from "../components/Footer"; import MainContent from "../components/MainContent"; +import { ThemeProvider } from "@material-ui/core/styles"; +import defaultTheme, { customTheme } from "../theme"; +import classNames from "classnames"; -const styles = theme => ({ - root: { - display: 'flex' +const styles = () => ({ + container: { + margin: "80px 20px 20px 15px", + paddingLeft: defaultTheme.drawer.width, + [defaultTheme.breakpoints.down("sm")]: { + paddingLeft: 0 + } }, + containerFull: { + paddingLeft: defaultTheme.drawer.miniWidth, + [defaultTheme.breakpoints.down("sm")]: { + paddingLeft: 0 + } + }, + settingBtn: { + top: 80, + backgroundColor: "rgba(0, 0, 0, 0.3)", + color: "white", + width: 48, + right: 0, + height: 48, + opacity: 0.9, + padding: 0, + zIndex: 999, + position: "fixed", + minWidth: 48, + borderTopRightRadius: 0, + borderBottomRightRadius: 0 + } }); class Layout extends React.Component { static displayName = Layout.name; - constructor(props) { super(props); + + this.state = { + theme: defaultTheme, + rightDrawerOpen: false, + navDrawerOpen: + window && window.innerWidth && window.innerWidth >= defaultTheme.breakpoints.values.md + ? true + : false + }; + + this.handleChangeNavDrawer = this.handleChangeNavDrawer.bind(this); + } + + handleChangeNavDrawer() { + this.setState({ + navDrawerOpen: !this.state.navDrawerOpen + }); } render() { const { classes } = this.props; + const { navDrawerOpen, theme } = this.state; return ( -
- - - + +
+ +
+ +
-
+ ); } } diff --git a/wallet-spa/src/components/SideMenu.jsx b/wallet-spa/src/components/SideMenu.jsx index 152310f9..db968b04 100644 --- a/wallet-spa/src/components/SideMenu.jsx +++ b/wallet-spa/src/components/SideMenu.jsx @@ -5,29 +5,113 @@ import ListItem from "@material-ui/core/ListItem"; import ListItemIcon from "@material-ui/core/ListItemIcon"; import ListItemText from "@material-ui/core/ListItemText"; import AccountCircle from "@material-ui/icons/AccountCircle"; +import HomeIcon from '@material-ui/icons/Home'; +import AccountBalanceIcon from '@material-ui/icons/AccountBalance'; import ExitToApp from "@material-ui/icons/ExitToApp"; +import AddIcon from '@material-ui/icons/Add'; import { Avatar } from "@material-ui/core"; import { Grid } from "@material-ui/core"; import { withStyles } from "@material-ui/core/styles"; +import classNames from "classnames"; +import { fade } from "@material-ui/core/styles/colorManipulator"; -const drawerWidth = 240; - -const styles = theme => ({ - drawer: { - width: drawerWidth, - flexShrink: 0, - }, - drawerPaper: { - width: drawerWidth, - backgroundImage: `linear-gradient(#cfd9df,#e2ebf0)`, - color: "grey", - }, - bigAvatar: { - margin: 30, - width: 100, - height: 100, - }, -}); +const drawStyles = theme => { + return { + drawerPaper: { + width: theme.drawer.width, + backgroundColor: "rgb(33, 33, 33)", + color: "white", + borderRight: "0px", + boxShadow: "rgba(0, 0, 0, 0.16) 0px 3px 10px, rgba(0, 0, 0, 0.23) 0px 3px 10px" + }, + drawerPaperClose: { + overflowX: "hidden", + transition: theme.transitions.create("width", { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + width: theme.drawer.miniWidth + }, + logo: { + cursor: "pointer", + fontSize: 22, + color: "white", + lineHeight: "64px", + fontWeight: 300, + backgroundColor: theme.palette.primary[500], + paddingLeft: 40, + height: 64 + }, + avatarRoot: { + padding: "16px 0 10px 15px", + backgroundImage: "url(" + require("../images/material_bg.png") + ")", + height: 100, + display: "flex" + }, + avatarRootMini: { + padding: "15px 0 10px 10px" + }, + avatarIcon: { + float: "left", + display: "block", + boxShadow: "0px 0px 0px 8px rgba(0,0,0,0.2)" + }, + avatarSpan: { + paddingTop: 8, + paddingLeft: 24, + display: "block", + color: "white", + fontWeight: 300, + textShadow: "1px 1px #444" + }, + menuItem: { + color: "white", + fontSize: 14 + }, + chevronIcon: { + float: "right", + marginLeft: "auto" + }, + subMenus: { + paddingLeft: 20 + }, + popupSubMenus: { + backgroundColor: "rgb(33, 33, 33)", + color: "white", + boxShadow: "rgba(0, 0, 0, 0.16) 0px 3px 10px, rgba(0, 0, 0, 0.23) 0px 3px 10px" + }, + menuItem: { + padding: "10px 16px", + color: "white", + fontSize: 14, + "&:focus": { + backgroundColor: theme.palette.primary.main, + "& .MuiListItemIcon-root, & .MuiListItemText-primary": { + color: theme.palette.common.white + } + } + }, + miniMenuItem: { + color: "white", + margin: "10px 0", + fontSize: 14, + "&:focus": { + backgroundColor: theme.palette.primary.main, + "& .MuiListItemIcon-root, & .MuiListItemText-primary": { + color: theme.palette.common.white + } + } + }, + miniIcon: { + margin: "0 auto", + color: "white", + "&:hover": { + backgroundColor: fade(theme.palette.common.white, 0.5) + }, + minWidth: "24px" + } + }; +}; class SideMenu extends Component { constructor(props) { @@ -53,57 +137,69 @@ class SideMenu extends Component { } render() { - const { classes } = this.props; + const { user } = this.state; + const { classes, navDrawerOpen, handleChangeNavDrawer } = this.props; return ( - - - - - { this.state.isLoggedIn ? this.renderWhenTrue() : this.renderWhenFalse()} - +
+ + +
+
My Wallet
+ {this.state.isLoggedIn &&
+ + {user.profile.name} +
} + + {this.state.isLoggedIn ? this.renderWhenTrue() : this.renderWhenFalse()} + +
+ +
+
); } renderWhenTrue() { return ( - - - - + + + + + + + + + + - + - + - + ) } renderWhenFalse() { return ( - + - + - + ) } @@ -116,4 +212,4 @@ class SideMenu extends Component { } } -export default withStyles(styles, { withTheme: true })(SideMenu); \ No newline at end of file +export default withStyles(drawStyles, { withTheme: true })(SideMenu); \ No newline at end of file diff --git a/wallet-spa/src/components/TopMenu.js b/wallet-spa/src/components/TopMenu.js deleted file mode 100644 index 834d3493..00000000 --- a/wallet-spa/src/components/TopMenu.js +++ /dev/null @@ -1,59 +0,0 @@ -import React from "react"; -import { makeStyles } from "@material-ui/core/styles"; -import AppBar from "@material-ui/core/AppBar"; -import Toolbar from "@material-ui/core/Toolbar"; -import Typography from "@material-ui/core/Typography"; -import IconButton from "@material-ui/core/IconButton"; -import MenuIcon from "@material-ui/icons/Face"; -import { MenuItem } from "@material-ui/core"; - -const drawerWidth = 240; - -const useStyles = makeStyles((theme) => ({ - appBar: { - width: `calc(100% - ${drawerWidth}px)`, - marginLeft: drawerWidth, - }, - menuButton: { - marginRight: theme.spacing(2), - }, - title: { - flexGrow: 1, - }, -})); - -// Styles and imports were ommited -function TopMenu() { - const classes = useStyles(); - - return ( - - - - - - - - - Home - - - - - - - Open Account - - - - - - ); -} - -export default TopMenu; diff --git a/wallet-spa/src/images/material_bg.png b/wallet-spa/src/images/material_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f0393fee087191c7c82bef03e9af20d4d6537d GIT binary patch literal 23211 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 ({ @@ -164,10 +166,22 @@ class Account extends React.Component { - Deposit - Withdraw - Transfer - Close + + + + + + + + diff --git a/wallet-spa/src/styles.js b/wallet-spa/src/styles.js new file mode 100644 index 00000000..06d8e6aa --- /dev/null +++ b/wallet-spa/src/styles.js @@ -0,0 +1,24 @@ +import { grey } from "@material-ui/core/colors"; + +const styles = { + navigation: { + fontSize: 15, + fontWeight: 300, + color: grey[600], + paddingBottom: 15, + display: "block" + }, + title: { + fontSize: 24, + fontWeight: 300, + marginBottom: 20 + }, + paper: { + padding: 30 + }, + clear: { + clear: "both" + } +}; + +export default styles; \ No newline at end of file diff --git a/wallet-spa/src/styles.scss b/wallet-spa/src/styles.scss new file mode 100644 index 00000000..f17d8414 --- /dev/null +++ b/wallet-spa/src/styles.scss @@ -0,0 +1,32 @@ +html { + font-family: 'Roboto', sans-serif; + -webkit-font-smoothing: antialiased; + } + + body, h1, h2, h3, h4, h5, h6 { + font-size: 15px; + margin: 0; + line-height: 24px; + } + + body { + margin: 0; + background-color: #efefef; + } + + body, html, #app, #app > div{ + height: 100%; + } + + a { + // color: #ff4081; + text-decoration: none; + } + + a:hover { + text-decoration: none; + } + + .m-b-15 { + margin-bottom: 15px + } \ No newline at end of file diff --git a/wallet-spa/src/theme.js b/wallet-spa/src/theme.js new file mode 100644 index 00000000..f81a321b --- /dev/null +++ b/wallet-spa/src/theme.js @@ -0,0 +1,67 @@ +import createMuiTheme from "@material-ui/core/styles/createMuiTheme"; +import { blue, grey, pink, red, deepOrange, orange, teal, green, amber, lime, purple } from "@material-ui/core/colors"; + +export const availableThemes = [ + { + title: "Default", + primary: blue, + secondary: pink + }, + { + title: "Sunset", + primary: deepOrange, + secondary: orange + }, + { + title: "Greeny", + primary: teal, + secondary: green + }, + { + title: "Beach", + primary: grey, + secondary: amber + }, + { + title: "Tech", + primary: blue, + secondary: lime + }, + { + title: "Deep Ocean", + primary: purple, + secondary: pink + } +]; + +const defaultTheme = { + palette: { + primary: blue, + secondary: pink + }, + error: red, + appBar: { + height: 57, + color: blue[600] + }, + drawer: { + width: 240, + color: grey[900], + backgroundColor: grey[900], + miniWidth: 56 + }, + raisedButton: { + primaryColor: blue[600] + }, + typography: { + // useNextVariants: true + } +}; + +const theme = createMuiTheme(defaultTheme); + +export const customTheme = option => { + return createMuiTheme({ ...defaultTheme, ...option }); +}; + +export default theme; \ No newline at end of file