diff --git a/index.html b/index.html index f8102eb..6643644 100644 --- a/index.html +++ b/index.html @@ -4,12 +4,14 @@ - - YouJuke + + + IBODI
+
diff --git a/package-lock.json b/package-lock.json index a9fe824..a08f10b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,18 +55,127 @@ } } }, + "@babel/runtime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", + "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", + "requires": { + "regenerator-runtime": "^0.12.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + } + } + }, + "@material-ui/core": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-3.1.2.tgz", + "integrity": "sha512-tTRjlTVJY78GDKRHKSuxpoghrFyDAu9GrYCnaARHaZ2pZWiBHuviqUgAC8n8jWUXG3e6vfAXn9zZWzFedb4LwQ==", + "requires": { + "@babel/runtime": "7.0.0", + "@types/jss": "^9.5.6", + "@types/react-transition-group": "^2.0.8", + "brcast": "^3.0.1", + "classnames": "^2.2.5", + "csstype": "^2.5.2", + "debounce": "^1.1.0", + "deepmerge": "^2.0.1", + "dom-helpers": "^3.2.1", + "hoist-non-react-statics": "^2.5.0", + "is-plain-object": "^2.0.4", + "jss": "^9.3.3", + "jss-camel-case": "^6.0.0", + "jss-default-unit": "^8.0.2", + "jss-global": "^3.0.0", + "jss-nested": "^6.0.1", + "jss-props-sort": "^6.0.0", + "jss-vendor-prefixer": "^7.0.0", + "keycode": "^2.1.9", + "normalize-scroll-left": "^0.1.2", + "popper.js": "^1.14.1", + "prop-types": "^15.6.0", + "react-event-listener": "^0.6.2", + "react-jss": "^8.1.0", + "react-transition-group": "^2.2.1", + "recompose": "0.28.0 - 0.30.0", + "warning": "^4.0.1" + } + }, + "@material-ui/icons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-3.0.1.tgz", + "integrity": "sha512-1kNcxYiIT1x8iDPEAlgmKrfRTIV8UyK6fLVcZ9kMHIKGWft9I451V5mvSrbCjbf7MX1TbLWzZjph0aVCRf9MqQ==", + "requires": { + "@babel/runtime": "7.0.0", + "recompose": "^0.29.0" + }, + "dependencies": { + "recompose": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.29.0.tgz", + "integrity": "sha512-J/qLXNU4W+AeHCDR70ajW8eMd1uroqZaECTj6qqDLPMILz3y0EzpYlvrnxKB9DnqcngWrtGwjXY9JeXaW9kS1A==", + "requires": { + "@babel/runtime": "^7.0.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + } + } + }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, + "@types/jss": { + "version": "9.5.6", + "resolved": "https://registry.npmjs.org/@types/jss/-/jss-9.5.6.tgz", + "integrity": "sha512-7TWmR5y1jYG4ka4wTZt65RR0kw4WgALFUWktQIWbLnDd6/z/0SQZ/4+UeH0rhdp+HEdIfmzPBH0VwE/4Z9Evzw==", + "requires": { + "csstype": "^2.0.0", + "indefinite-observable": "^1.0.1" + } + }, "@types/node": { "version": "9.4.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.6.tgz", "integrity": "sha512-CTUtLb6WqCCgp6P59QintjHWqzf4VL1uPA27bipLAPxFqrtK1gEYllePzTICGqQ8rYsCbpnsNypXjjDzGAAjEQ==", "dev": true }, + "@types/prop-types": { + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.6.tgz", + "integrity": "sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ==" + }, + "@types/react": { + "version": "16.4.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.4.14.tgz", + "integrity": "sha512-Gh8irag2dbZ2K6vPn+S8+LNrULuG3zlCgJjVUrvuiUK7waw9d9CFk2A/tZFyGhcMDUyO7tznbx1ZasqlAGjHxA==", + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-transition-group": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.0.14.tgz", + "integrity": "sha512-pa7qB0/mkhwWMBFoXhX8BcntK8G4eQl4sIfSrJCxnivTYRQWjOWf2ClR9bWdm0EUFBDHzMbKYS+QYfDtBzkY4w==", + "requires": { + "@types/react": "*" + } + }, "@webassemblyjs/ast": { "version": "1.5.12", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.12.tgz", @@ -1841,6 +1950,11 @@ "repeat-element": "^1.1.2" } }, + "brcast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/brcast/-/brcast-3.0.1.tgz", + "integrity": "sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg==" + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2164,12 +2278,22 @@ "supports-color": "^2.0.0" } }, + "change-emitter": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", + "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" + }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "chart.js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-1.1.1.tgz", + "integrity": "sha1-qbFwVCIL1Fy9sXb9a8uHg++HGn0=" + }, "cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", @@ -3688,6 +3812,16 @@ "sha.js": "^2.4.8" } }, + "create-react-class": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -3782,6 +3916,14 @@ } } }, + "css-vendor": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", + "integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=", + "requires": { + "is-in-browser": "^1.0.2" + } + }, "css-what": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", @@ -3859,6 +4001,11 @@ "cssom": "0.3.x" } }, + "csstype": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.7.tgz", + "integrity": "sha512-Nt5VDyOTIIV4/nRFswoCKps1R5CD1hkiyjBE9/thNaNZILLEviVw9yWQw15+O+CpNjQKB/uvdcxFFOrSflY3Yw==" + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -3874,6 +4021,83 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz", + "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw==" + }, + "d3-delaunay": { + "version": "2.0.1", + "resolved": "http://registry.npmjs.org/d3-delaunay/-/d3-delaunay-2.0.1.tgz", + "integrity": "sha512-INaPSYIJD6j4wsKI+S+YEtr6aO7LKiknea2GPnr3wWJYgXwf3jDy9M+VWIPCYIFxqOHIG1UOi0fAcJvnPUwu0Q==" + }, + "d3-format": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", + "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==" + }, + "d3-interpolate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", + "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.7.tgz", + "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA==" + }, + "d3-scale": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.1.2.tgz", + "integrity": "sha512-bESpd64ylaKzCDzvULcmHKZTlzA/6DGSVwx7QSDj/EnX9cpSevsdiwdHFYI9ouo9tNBbV3v5xztHS2uFeOzh8Q==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-shape": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.2.tgz", + "integrity": "sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.10.tgz", + "integrity": "sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g==" + }, + "d3-time-format": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", + "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", + "requires": { + "d3-time": "1" + } + }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, "dargs": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", @@ -3907,6 +4131,11 @@ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", "dev": true }, + "debounce": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", + "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3922,6 +4151,11 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decimal.js-light": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.4.1.tgz", + "integrity": "sha512-OToPy7ssm+ha36h4Af2Yyh3ky51GcKmirdTcyQ1zmjCzV8/M6kqJqjOYMSxWAfm311mtOWLZPnD13JcQngr3vw==" + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -3949,6 +4183,11 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.0.tgz", + "integrity": "sha512-7iuEZ5j20aoFhiiaFZiSipk23nPl+UGKsglMJ+dy27HTpQ3wm2tj2esD/UHXlrqh5o6p6MW7m+fYSUz4JvuqVQ==" + }, "default-require-extensions": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", @@ -4117,6 +4356,11 @@ "esutils": "^2.0.2" } }, + "dom-helpers": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" + }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -5611,6 +5855,11 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -5688,6 +5937,11 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "hyphenate-style-name": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", + "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es=" + }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -5805,6 +6059,21 @@ "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", "dev": true }, + "indefinite-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-1.0.1.tgz", + "integrity": "sha1-CZFUI8yNb36xy3iCrRNGM8mm7cM=", + "requires": { + "symbol-observable": "1.0.4" + }, + "dependencies": { + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" + } + } + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -6089,6 +6358,11 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + }, "is-generator-fn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", @@ -6104,6 +6378,11 @@ "is-extglob": "^1.0.0" } }, + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -6193,7 +6472,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "^3.0.1" }, @@ -6201,8 +6479,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -6472,6 +6749,11 @@ "is-object": "^1.0.1" } }, + "javascript-detect-element-resize": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/javascript-detect-element-resize/-/javascript-detect-element-resize-0.5.3.tgz", + "integrity": "sha1-GnHNUd/lZZB/KZAS/nOilBBAJd4=" + }, "jest": { "version": "22.4.2", "resolved": "https://registry.npmjs.org/jest/-/jest-22.4.2.tgz", @@ -7358,6 +7640,156 @@ "verror": "1.10.0" } }, + "jss": { + "version": "9.8.7", + "resolved": "https://registry.npmjs.org/jss/-/jss-9.8.7.tgz", + "integrity": "sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ==", + "requires": { + "is-in-browser": "^1.1.3", + "symbol-observable": "^1.1.0", + "warning": "^3.0.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "jss-camel-case": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-6.1.0.tgz", + "integrity": "sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ==", + "requires": { + "hyphenate-style-name": "^1.0.2" + } + }, + "jss-compose": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jss-compose/-/jss-compose-5.0.0.tgz", + "integrity": "sha512-YofRYuiA0+VbeOw0VjgkyO380sA4+TWDrW52nSluD9n+1FWOlDzNbgpZ/Sb3Y46+DcAbOS21W5jo6SAqUEiuwA==", + "requires": { + "warning": "^3.0.0" + }, + "dependencies": { + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "jss-default-unit": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/jss-default-unit/-/jss-default-unit-8.0.2.tgz", + "integrity": "sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg==" + }, + "jss-expand": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/jss-expand/-/jss-expand-5.3.0.tgz", + "integrity": "sha512-NiM4TbDVE0ykXSAw6dfFmB1LIqXP/jdd0ZMnlvlGgEMkMt+weJIl8Ynq1DsuBY9WwkNyzWktdqcEW2VN0RAtQg==" + }, + "jss-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jss-extend/-/jss-extend-6.2.0.tgz", + "integrity": "sha512-YszrmcB6o9HOsKPszK7NeDBNNjVyiW864jfoiHoMlgMIg2qlxKw70axZHqgczXHDcoyi/0/ikP1XaHDPRvYtEA==", + "requires": { + "warning": "^3.0.0" + }, + "dependencies": { + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "jss-global": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jss-global/-/jss-global-3.0.0.tgz", + "integrity": "sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q==" + }, + "jss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jss-nested/-/jss-nested-6.0.1.tgz", + "integrity": "sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA==", + "requires": { + "warning": "^3.0.0" + }, + "dependencies": { + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "jss-preset-default": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-4.5.0.tgz", + "integrity": "sha512-qZbpRVtHT7hBPpZEBPFfafZKWmq3tA/An5RNqywDsZQGrlinIF/mGD9lmj6jGqu8GrED2SMHZ3pPKLmjCZoiaQ==", + "requires": { + "jss-camel-case": "^6.1.0", + "jss-compose": "^5.0.0", + "jss-default-unit": "^8.0.2", + "jss-expand": "^5.3.0", + "jss-extend": "^6.2.0", + "jss-global": "^3.0.0", + "jss-nested": "^6.0.1", + "jss-props-sort": "^6.0.0", + "jss-template": "^1.0.1", + "jss-vendor-prefixer": "^7.0.0" + } + }, + "jss-props-sort": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jss-props-sort/-/jss-props-sort-6.0.0.tgz", + "integrity": "sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g==" + }, + "jss-template": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jss-template/-/jss-template-1.0.1.tgz", + "integrity": "sha512-m5BqEWha17fmIVXm1z8xbJhY6GFJxNB9H68GVnCWPyGYfxiAgY9WTQyvDAVj+pYRgrXSOfN5V1T4+SzN1sJTeg==", + "requires": { + "warning": "^3.0.0" + }, + "dependencies": { + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "jss-vendor-prefixer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz", + "integrity": "sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA==", + "requires": { + "css-vendor": "^0.3.8" + } + }, "jsx-ast-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", @@ -7367,6 +7799,11 @@ "array-includes": "^3.0.3" } }, + "keycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", + "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" + }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -7667,8 +8104,7 @@ "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "lodash.assign": { "version": "4.2.0", @@ -7691,8 +8127,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, "lodash.flattendeep": { "version": "4.4.0", @@ -7724,6 +8159,11 @@ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", "dev": true }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -7915,8 +8355,7 @@ "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" }, "math-random": { "version": "1.0.1", @@ -8566,6 +9005,11 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, + "normalize-scroll-left": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz", + "integrity": "sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg==" + }, "normalize-url": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", @@ -9125,8 +9569,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pify": { "version": "2.3.0", @@ -9170,6 +9613,11 @@ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, + "popper.js": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.4.tgz", + "integrity": "sha1-juwdj/AqWjoVLdQ0FKFce3n9abY=" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -9789,10 +10237,9 @@ "dev": true }, "prettier": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", - "dev": true + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.3.tgz", + "integrity": "sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg==" }, "pretty-bytes": { "version": "4.0.2", @@ -9978,7 +10425,6 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", - "dev": true, "requires": { "performance-now": "^2.1.0" } @@ -10019,27 +10465,99 @@ } }, "react": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", - "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/react/-/react-16.5.2.tgz", + "integrity": "sha512-FDCSVd3DjVTmbEAjUNX6FgfAmQ+ypJfHUsqUJOYNCBUp1h8lqmtC+0mXJ+JjsWx4KAVTkk1vKd1hLQPvEviSuw==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2", + "schedule": "^0.5.0" + }, + "dependencies": { + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + } + } + }, + "react-chartjs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs/-/react-chartjs-1.2.0.tgz", + "integrity": "sha512-Zhc47Jv8DwJwT3R5iyskRWoz5TEP3qloMlC758Oa+4THSxd/Qat4CIE23epY7XHzEuL5m6/hJIjD2iqLcO9rfw==", + "requires": { + "create-react-class": "^15.6.2" + } + }, + "react-charts": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/react-charts/-/react-charts-1.0.10.tgz", + "integrity": "sha1-aQHuCzhf4VuYryn9wETSs+ta8ZQ=", + "requires": { + "d3-delaunay": "^2.0.1", + "d3-scale": "^2.0.0", + "d3-shape": "^1.2.0", + "d3-voronoi": "^1.1.2", + "hoist-non-react-statics": "^2.5.0", + "javascript-detect-element-resize": "^0.5.3", + "raf": "^3.4.0", + "react-show": "^3.0.1" } }, "react-dom": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", - "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.5.2.tgz", + "integrity": "sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2", + "schedule": "^0.5.0" + }, + "dependencies": { + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + } + } + }, + "react-event-listener": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.4.tgz", + "integrity": "sha512-t7VSjIuUFmN+GeyKb+wm025YLeojVB85kJL6sSs0wEBJddfmKBEQz+CNBZ2zBLKVWkPy/fZXM6U5yvojjYBVYQ==", + "requires": { + "@babel/runtime": "7.0.0", + "prop-types": "^15.6.0", + "warning": "^4.0.1" + } + }, + "react-jss": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-8.6.1.tgz", + "integrity": "sha512-SH6XrJDJkAphp602J14JTy3puB2Zxz1FkM3bKVE8wON+va99jnUTKWnzGECb3NfIn9JPR5vHykge7K3/A747xQ==", + "requires": { + "hoist-non-react-statics": "^2.5.0", + "jss": "^9.7.0", + "jss-preset-default": "^4.3.0", + "prop-types": "^15.6.0", + "theming": "^1.3.0" } }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, "react-reconciler": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", @@ -10052,6 +10570,36 @@ "prop-types": "^15.6.0" } }, + "react-resize-detector": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz", + "integrity": "sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ==", + "requires": { + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "prop-types": "^15.6.0", + "resize-observer-polyfill": "^1.5.0" + } + }, + "react-show": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-show/-/react-show-3.0.4.tgz", + "integrity": "sha512-lcghWNUnYSt4ataMeyIJxXC49oIymQXzofM1I0upQzmuPhul+n9+B1UZOLVKfzLRytoKIMzg6yv0m/dxhZAX6A==", + "requires": { + "raf": "^3.4.0" + } + }, + "react-smooth": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.2.tgz", + "integrity": "sha512-pIGzL1g9VGAsRsdZQokIK0vrCkcdKtnOnS1gyB2rrowdLy69lNSWoIjCTWAfgbiYvria8tm5hEZqj+jwXMkV4A==", + "requires": { + "lodash": "~4.17.4", + "prop-types": "^15.6.0", + "raf": "^3.4.0", + "react-transition-group": "^2.5.0" + } + }, "react-test-renderer": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.2.0.tgz", @@ -10063,6 +10611,36 @@ "prop-types": "^15.6.0" } }, + "react-transition-group": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.0.tgz", + "integrity": "sha512-qYB3JBF+9Y4sE4/Mg/9O6WFpdoYjeeYqx0AFb64PTazVy8RPMiE3A47CG9QmM4WJ/mzDiZYslV+Uly6O1Erlgw==", + "requires": { + "dom-helpers": "^3.3.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + } + } + }, "read-chunk": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", @@ -10185,6 +10763,39 @@ } } }, + "recharts": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-1.3.1.tgz", + "integrity": "sha512-9RSCj8B/m5F/xdl8wWeByNH5jzLAyi/zpDwZsaRCzpnINKo8UTDhx9CQg78ZlPNBtbhUu9Gy2sIHmzqBiUbcZw==", + "requires": { + "classnames": "~2.2.5", + "core-js": "~2.5.1", + "d3-interpolate": "~1.3.0", + "d3-scale": "~2.1.0", + "d3-shape": "~1.2.0", + "lodash": "~4.17.4", + "prop-types": "~15.6.0", + "react-resize-detector": "~2.3.0", + "react-smooth": "~1.0.0", + "recharts-scale": "^0.4.0", + "reduce-css-calc": "~1.3.0" + }, + "dependencies": { + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + } + } + }, + "recharts-scale": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.0.tgz", + "integrity": "sha512-+XRGUAZsw5Fs6aiosBVcmu76JZXmb1HLUMFeAPzAfrPlO6muPNEXMuC5fXOO8Sy1bZ6QVJzAFY5w1nXXZzqB5Q==", + "requires": { + "decimal.js-light": "^2.4.1" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -10194,6 +10805,26 @@ "resolve": "^1.1.6" } }, + "recompose": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", + "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", + "requires": { + "@babel/runtime": "^7.0.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + } + } + }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -10208,7 +10839,6 @@ "version": "1.3.0", "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, "requires": { "balanced-match": "^0.4.2", "math-expression-evaluator": "^1.2.14", @@ -10218,8 +10848,7 @@ "balanced-match": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" } } }, @@ -10227,7 +10856,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, "requires": { "balanced-match": "^0.4.2" }, @@ -10235,8 +10863,7 @@ "balanced-match": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" } } }, @@ -10476,6 +11103,11 @@ "resolve-from": "^1.0.0" } }, + "resize-observer-polyfill": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz", + "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" + }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -11622,6 +12254,14 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "schedule": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/schedule/-/schedule-0.5.0.tgz", + "integrity": "sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw==", + "requires": { + "object-assign": "^4.1.1" + } + }, "schema-utils": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", @@ -12484,6 +13124,17 @@ "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", "dev": true }, + "theming": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/theming/-/theming-1.3.0.tgz", + "integrity": "sha512-ya5Ef7XDGbTPBv5ENTwrwkPUexrlPeiAg/EI9kdlUAZhNlRbCdhMKRgjNX1IcmsmiPcqDQZE6BpSaH+cr31FKw==", + "requires": { + "brcast": "^3.0.1", + "is-function": "^1.0.1", + "is-plain-object": "^2.0.1", + "prop-types": "^15.5.8" + } + }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", @@ -13077,6 +13728,14 @@ "makeerror": "1.0.x" } }, + "warning": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz", + "integrity": "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "watch": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", diff --git a/package.json b/package.json index 02dece7..3a35786 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,17 @@ ] }, "dependencies": { + "@material-ui/core": "^3.1.2", + "@material-ui/icons": "^3.0.1", + "chart.js": "^1.1.1", "classnames": "^2.2.6", + "prettier": "^1.14.3", "prop-types": "^15.6.1", - "react": "^16.2.0", - "react-dom": "^16.2.0" + "react": "^16.5.2", + "react-chartjs": "^1.2.0", + "react-charts": "^1.0.10", + "react-dom": "^16.5.2", + "recharts": "^1.3.1" }, "devDependencies": { "babel-jest": "^22.4.1", diff --git a/src/components/AggregateData.js b/src/components/AggregateData.js new file mode 100644 index 0000000..6c02bf7 --- /dev/null +++ b/src/components/AggregateData.js @@ -0,0 +1,51 @@ +import React from 'react'; +import '../styles/components/AggregateData.scss'; +import { + Radar, + RadarChart, + PolarGrid, + Legend, + PolarAngleAxis, + PolarRadiusAxis +} from 'recharts'; + +class AggregateData extends React.Component { + constructor() { + super(); + + } + + render() { + return ( + + + + + + + + + ); + } +} + +export default AggregateData; diff --git a/src/components/App.js b/src/components/App.js index a4aaba8..b5be63d 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -1,19 +1,34 @@ -import React from 'react'; +import React from "react"; +import Summary from "./Summary"; +import Blood from "./blood/Blood"; -import '../styles/components/app.scss'; -class App extends React.Component { +import "../styles/components/App.scss"; - constructor(){ +class App extends React.Component { + constructor() { super(); + this.state = { + currentPage:'Summary', + }; + + this.receiver = this.receiver.bind(this); + } + + receiver(subject){ + this.setState({ + currentPage:subject + }) + } - render(){ + render() { return ( -
- App goes here +
+ {this.state.currentPage === 'Summary' ? : null} + {this.state.currentPage === 'Blood' ? : null}
- ) + ); } } diff --git a/src/components/Buttons.js b/src/components/Buttons.js new file mode 100644 index 0000000..0f92743 --- /dev/null +++ b/src/components/Buttons.js @@ -0,0 +1,68 @@ +import React from 'react'; +import cx from 'classnames'; +import "../styles/components/Buttons.scss"; + + +class Buttons extends React.Component{ + constructor(){ + super(); + this.state={ + + home:true, + family:false, + chat:false, + + } + + + this.handleClickHome = this.handleClickHome.bind(this) + this.handleClickFamily = this.handleClickFamily.bind(this) + this.handleClickChat = this.handleClickChat.bind(this) + } + + + + handleClickHome(event){ + event.preventDefault(); + this.setState({ + home:true, + family:false, + chat:false, + }); + this.props.receiver('Summary') + } + handleClickFamily(event){ + event.preventDefault(); + this.setState({ + home:false, + family:true, + chat:false, + }) + } + handleClickChat(event){ + event.preventDefault(); + this.setState({ + home:false, + family:false, + chat:true, + }) + } + + + render(){ + const classes__home=cx('fas fa-home', {home: this.state.home}); + const classes__family=cx('fas fa-users', {family: this.state.family}); + const classes__chat=cx('fas fa-comments', {chat: this.state.chat}); + + return( +
+ + + + +
+ ) + +}} + +export default Buttons; diff --git a/src/components/History.js b/src/components/History.js new file mode 100644 index 0000000..e854bae --- /dev/null +++ b/src/components/History.js @@ -0,0 +1,16 @@ +import React from 'react'; + + +class History extends React.Component{ + constructor(){ + super(); + } + + render(){ + return( +
+ ) + } +} + +export default History; diff --git a/src/components/Modal.js b/src/components/Modal.js new file mode 100644 index 0000000..54824af --- /dev/null +++ b/src/components/Modal.js @@ -0,0 +1,52 @@ +import React from 'react'; +import ReactDOM from 'react-dom' + +import '../styles/components/Modal.scss'; + +class Modal extends React.Component { + render() { + // Render nothing if the "show" prop is false + if(!this.props.show) { + return null; + } + + // The gray background + const backdropStyle = { + position: 'fixed', + top: 0, + bottom: 0, + left: 0, + right: 0, + backgroundColor: 'rgba(0,0,0,1)', + padding: 50 + }; + + // The modal "window" + const modalStyle = { + + borderRadius: 5, + maxWidth: 500, + minHeight: 300, + margin: '0 auto', + padding: 30 + }; + + return ReactDOM.createPortal( + (
+
+ {this.props.children} + +
+ +
+
+
), + document.querySelector('#modal') + ); + } +} + + +export default Modal; diff --git a/src/components/Navigation.js b/src/components/Navigation.js new file mode 100644 index 0000000..90c22d0 --- /dev/null +++ b/src/components/Navigation.js @@ -0,0 +1,40 @@ +import React from 'react'; +import History from './History'; +import "../styles/components/Navigation.scss"; + +class Navigation extends React.Component{ + constructor(){ + super(); + + this.state={ + showHistory:false, + } + + this.handleClick = this.handleClick.bind(this); + } + + handleClick(event){ + event.preventDefault() + this.setState({ + showHistory:!this.state.showHistory, + }) + } + + render(){ + return( +
+

{this.props.title}

+
+ +

Your {this.props.type} results are heathier than {this.props.ranking}% of your peers!

+ {this.state.showHistory? +
    + +
: ""} +
+
+ ) + } +} + +export default Navigation; diff --git a/src/components/Notification.js b/src/components/Notification.js new file mode 100644 index 0000000..c0082e2 --- /dev/null +++ b/src/components/Notification.js @@ -0,0 +1,15 @@ +import React from 'react'; + +class Notification extends React.Component{ + constructor(){ + super(); + } + + render(){ + return( +
+ ) + } +} + +export default Notification; diff --git a/src/components/Section.js b/src/components/Section.js new file mode 100644 index 0000000..dbcecbe --- /dev/null +++ b/src/components/Section.js @@ -0,0 +1,56 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { withStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardActionArea from '@material-ui/core/CardActionArea'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; +import CardMedia from '@material-ui/core/CardMedia'; +import Button from '@material-ui/core/Button'; +import Typography from '@material-ui/core/Typography'; +import '../styles/components/Section.scss'; + +class Section extends React.Component{ + constructor(){ + super(); + this.handleClick = this.handleClick.bind(this); + + } + + handleClick(event){ + + this.props.receiver(this.props.subject); + + } + + render(){ + return( + + + + + + {this.props.subject} + + + Normal + + + + + + + + ) + } + + +} + +export default Section; diff --git a/src/components/Sections.js b/src/components/Sections.js new file mode 100644 index 0000000..e73b7fa --- /dev/null +++ b/src/components/Sections.js @@ -0,0 +1,28 @@ +import React from "react"; +import Section from "./Section"; +import '../styles/components/Sections.scss'; + +class Sections extends React.Component { + constructor() { + super(); + } + + + + render() { + const dataArr = this.props.myData; + return ( +
+ {dataArr.map(section => { + return
; + })} +
+ ); + } +} + +export default Sections; diff --git a/src/components/Summary.js b/src/components/Summary.js new file mode 100644 index 0000000..550f946 --- /dev/null +++ b/src/components/Summary.js @@ -0,0 +1,46 @@ +import React from "react"; +import AggregateData from "./AggregateData"; +import Navigation from "./Navigation"; +import Notification from "./Notification"; +import Sections from "./Sections"; +import Buttons from "./Buttons"; +import cx from 'classnames'; + + + +class Summary extends React.Component { + constructor() { + super(); + this.state = { + myData: [ + { subject: "Blood", current: 100, previous: 140, fullMark: 150, image:"./src/images/blood.jpg"}, + { subject: "Heart", current: 98, previous: 130, fullMark: 150 ,image:"./src/images/heart.jpg"}, + { subject: "Liver", current: 86, previous: 130, fullMark: 150 ,image:"./src/images/liver.jpg"}, + { subject: "Renal", current: 130, previous: 100, fullMark: 150 ,image:"./src/images/kidney.jpg"}, + { subject: "Thyroid", current: 100, previous: 90, fullMark: 150 ,image:"./src/images/thyroid.jpg"}, + { subject: "Bone", current: 65, previous: 85, fullMark: 150 ,image:"./src/images/bone.jpg"}, + { subject: "Diabetic", current: 100, previous: 85, fullMark: 150 ,image:"./src/images/diabetic.jpg"}, + { subject: "Urine", current: 65, previous: 85, fullMark: 150 ,image:"./src/images/urine.jpg"} + ], + overallRankingPercentile:80, + + }; + }; + + + + render() { + + return ( +
+ + + + + +
+ ); + } +} + +export default Summary; diff --git a/src/components/blood/Blood.js b/src/components/blood/Blood.js new file mode 100644 index 0000000..40dcef9 --- /dev/null +++ b/src/components/blood/Blood.js @@ -0,0 +1,87 @@ +import React from "react"; +import Navigation from "../Navigation"; +import Notification from "../Notification"; +import Buttons from "../Buttons"; +import BloodChart_WBC from "./BloodChart_WBC"; +import Commentary_WBC from "./Commentary_WBC"; +import BloodBarChart_RBC from "./BloodBarChart_RBC"; +import Commentary_RBC from "./Commentary_RBC"; +import BloodBarChart_TLC from "./BloodBarChart_TLC"; +import Commentary_TLC from "./Commentary_TLC"; +import cx from "classnames"; +import "../../styles/components/blood/Blood.scss"; + +class Blood extends React.Component { + constructor() { + super(); + this.state = { + whiteBloodCell: [ + { + year: "2016", + your_results: 9000, + standard_top: 11000, + standard_buttom: 4000 + }, + { + year: "2017", + your_results: 8680, + standard_top: 11000, + standard_buttom: 4000 + }, + { + year: "2018", + your_results: 11900, + standard_top: 11000, + standard_buttom: 4000 + } + ], + redBloodCell: [ + {name: 'RBC', standard_buttom: 3, yourRBC: 0.1, standard_top: 2} + ], + tLC: [ + {name: 'TLC', standard_buttom: 1, yourRBC: 0.1, standard_top: 4} + ], + currentYear: 2018, + bloodRankingPercentile: 95 + }; + } + + render() { + return ( +
+ + +
+ + +
+
+
+ + +
+
+ + +
+
+ +
+ ); + } +} + +export default Blood; diff --git a/src/components/blood/BloodBarChart_RBC.js b/src/components/blood/BloodBarChart_RBC.js new file mode 100644 index 0000000..38e552e --- /dev/null +++ b/src/components/blood/BloodBarChart_RBC.js @@ -0,0 +1,41 @@ +import React from 'react'; +import { + BarChart, + Area, + Line, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend +} from 'recharts'; +import '../../styles/components/blood/BloodBarChart_RBC.scss'; + + +// import '../../styles/components/blood/BloodChart_WBC.scss'; + +class BloodBarChart_RBC extends React.Component{ + constructor(){ + super(); + } + + render(){ + return( + + + + + + + + + + + + + ) + } +}; + +export default BloodBarChart_RBC; diff --git a/src/components/blood/BloodBarChart_TLC.js b/src/components/blood/BloodBarChart_TLC.js new file mode 100644 index 0000000..3e45876 --- /dev/null +++ b/src/components/blood/BloodBarChart_TLC.js @@ -0,0 +1,41 @@ +import React from 'react'; +import { + BarChart, + Area, + Line, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend +} from 'recharts'; +import '../../styles/components/blood/BloodBarChart_TLC.scss'; + + +// import '../../styles/components/blood/BloodChart_WBC.scss'; + +class BloodBarChart_TLC extends React.Component{ + constructor(){ + super(); + } + + render(){ + return( + + + + + + + + + + + + + ) + } +}; + +export default BloodBarChart_TLC; diff --git a/src/components/blood/BloodChart_WBC.js b/src/components/blood/BloodChart_WBC.js new file mode 100644 index 0000000..53748a3 --- /dev/null +++ b/src/components/blood/BloodChart_WBC.js @@ -0,0 +1,37 @@ +import React from 'react'; +import { + ComposedChart, + Area, + Line, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend +} from 'recharts'; + +import '../../styles/components/blood/BloodChart_WBC.scss'; + +class BloodChart_WBC extends React.Component{ + constructor(){ + super(); + } + + render(){ + return( + + + + + + + + + + + ) + } +}; + +export default BloodChart_WBC; diff --git a/src/components/blood/Commentary_RBC.js b/src/components/blood/Commentary_RBC.js new file mode 100644 index 0000000..c34834c --- /dev/null +++ b/src/components/blood/Commentary_RBC.js @@ -0,0 +1,44 @@ +import React from "react"; +import Commentary_base from "./Commentary_base"; + +class Commentary_RBC extends React.Component { + constructor() { + super(); + } + + render() { + return ( + + +

+ Your red blood cells count is within the normal range +

+ +

Implications of high white blood cells

+ +
+ ); + } +} + +export default Commentary_RBC; diff --git a/src/components/blood/Commentary_TLC.js b/src/components/blood/Commentary_TLC.js new file mode 100644 index 0000000..077818b --- /dev/null +++ b/src/components/blood/Commentary_TLC.js @@ -0,0 +1,44 @@ +import React from "react"; +import Commentary_base from "./Commentary_base"; + +class Commentary_TLC extends React.Component { + constructor() { + super(); + } + + render() { + return ( + + +

+ Your TLC count is within the normal range +

+ +

Implications of high white blood cells

+ +
+ ); + } +} + +export default Commentary_TLC; diff --git a/src/components/blood/Commentary_WBC.js b/src/components/blood/Commentary_WBC.js new file mode 100644 index 0000000..fbf4b79 --- /dev/null +++ b/src/components/blood/Commentary_WBC.js @@ -0,0 +1,70 @@ +import React from "react"; +import '../../styles/components/blood/Commentary_WBC.scss'; +import cx from 'classnames'; +import Modal from '../Modal'; + +class Commentary_WBC extends React.Component { + constructor() { + super(); + this.state={ + + isOpen:false, + + } + this.handleClick = this.handleClick.bind(this); + } + + handleClick(event){ + this.setState({ + isOpen: !this.state.isOpen, + + }) + } + + render() { + const currentYearResults=this.props.whiteBloodCell.find(result => { + return result.year==this.props.currentYear + }) + const yourWBC=currentYearResults? currentYearResults.your_results:'not available'; + + + + return ( + + ); + } +} + +export default Commentary_WBC; diff --git a/src/components/blood/Commentary_base.js b/src/components/blood/Commentary_base.js new file mode 100644 index 0000000..8a2a65c --- /dev/null +++ b/src/components/blood/Commentary_base.js @@ -0,0 +1,43 @@ +import React from "react"; +import '../../styles/components/blood/Commentary_WBC.scss'; +import cx from 'classnames'; +import Modal from '../Modal'; + +class Commentary_WBC extends React.Component { + constructor() { + super(); + this.state={ + + isOpen:false, + + } + this.handleClick = this.handleClick.bind(this); + } + + handleClick(event){ + this.setState({ + isOpen: !this.state.isOpen, + + }) + } + + render() { + + + + + return ( + + ); + } +} + +export default Commentary_WBC; diff --git a/src/images/blood.jpg b/src/images/blood.jpg new file mode 100644 index 0000000..1e1ecfe Binary files /dev/null and b/src/images/blood.jpg differ diff --git a/src/images/bone.jpg b/src/images/bone.jpg new file mode 100644 index 0000000..d36f582 Binary files /dev/null and b/src/images/bone.jpg differ diff --git a/src/images/diabetic.jpg b/src/images/diabetic.jpg new file mode 100644 index 0000000..a6a2b7d Binary files /dev/null and b/src/images/diabetic.jpg differ diff --git a/src/images/heart.jpg b/src/images/heart.jpg new file mode 100644 index 0000000..33474ea Binary files /dev/null and b/src/images/heart.jpg differ diff --git a/src/images/kidney.jpg b/src/images/kidney.jpg new file mode 100644 index 0000000..0c95129 Binary files /dev/null and b/src/images/kidney.jpg differ diff --git a/src/images/liver.jpg b/src/images/liver.jpg new file mode 100644 index 0000000..24861dd Binary files /dev/null and b/src/images/liver.jpg differ diff --git a/src/images/thyroid.jpg b/src/images/thyroid.jpg new file mode 100644 index 0000000..cfc62a6 Binary files /dev/null and b/src/images/thyroid.jpg differ diff --git a/src/images/urine.jpg b/src/images/urine.jpg new file mode 100644 index 0000000..d51cf1c Binary files /dev/null and b/src/images/urine.jpg differ diff --git a/src/styles/components/AggregateData.scss b/src/styles/components/AggregateData.scss new file mode 100644 index 0000000..a3b7f50 --- /dev/null +++ b/src/styles/components/AggregateData.scss @@ -0,0 +1,14 @@ +.radarDiagram{ + display: flex; + justify-content: center; + margin: 0 auto; + + .recharts-polar-radius-axis-tick{ + + tspan{ + display: none; + } + } + + +} diff --git a/src/styles/components/Buttons.scss b/src/styles/components/Buttons.scss new file mode 100644 index 0000000..9f971e2 --- /dev/null +++ b/src/styles/components/Buttons.scss @@ -0,0 +1,22 @@ +@import 'parameters'; + +.buttons{ + + display:flex; + justify-content: space-around; + padding: 1em 0; + position:fixed; + bottom:0px; + background-color: $background-color; + z-index: 100; + width: 100%; + .home{ + color:$button-color; + } + .family{ + color:$button-color; + } + .chat{ + color:$button-color; + } +} diff --git a/src/styles/components/Modal.scss b/src/styles/components/Modal.scss new file mode 100644 index 0000000..40571e6 --- /dev/null +++ b/src/styles/components/Modal.scss @@ -0,0 +1,41 @@ +@import 'parameters'; + +ul{ + list-style: none; + margin: 0; + padding: 0; +} + +.modal{ + display: flex; + flex-flow: column wrap; + background-color: $background-color; + justify-content: center; + padding: $content-padding; + height: 80%; + + + h3{ + font-size: $normal-font-size; + margin: 0; + } + .alert{ + color:$alert-color; + padding:0; + border:0; + margin:8px 0; + } + li{ + font-size: $medium-font-size; + } + .explaination{ + padding-left: 1em; + list-style: circle; + } + .nav{ + margin-top:2em; + color: $button-color; + font-size: $medium-font-size; + + } +} diff --git a/src/styles/components/Navigation.scss b/src/styles/components/Navigation.scss new file mode 100644 index 0000000..b5db7b7 --- /dev/null +++ b/src/styles/components/Navigation.scss @@ -0,0 +1,28 @@ +@import 'parameters'; + +.navigation { + display: flex; + flex-direction: column; + + h2 { + display: flex; + width: 100%; + justify-content: center; + padding: 0.5em 0; + margin: 0; + text-align: center; + position:fixed; + z-index: 100; + top:0px; + + background-color: $background-color; + } + + .below{ + padding-top:70px; + } + + p{ + padding:$content-padding; + } +} diff --git a/src/styles/components/Section.scss b/src/styles/components/Section.scss new file mode 100644 index 0000000..79e9460 --- /dev/null +++ b/src/styles/components/Section.scss @@ -0,0 +1,8 @@ + +.sectionCard { + width:45vw; + display: flex; + flex-direction: column; + margin: 0; + margin: 7px; +} diff --git a/src/styles/components/Sections.scss b/src/styles/components/Sections.scss new file mode 100644 index 0000000..1087d7f --- /dev/null +++ b/src/styles/components/Sections.scss @@ -0,0 +1,5 @@ +.sections{ + display: flex; + flex-flow: row wrap; + justify-content: space-around; +} diff --git a/src/styles/components/_parameters.scss b/src/styles/components/_parameters.scss new file mode 100644 index 0000000..f8af666 --- /dev/null +++ b/src/styles/components/_parameters.scss @@ -0,0 +1,16 @@ +$font-color:rgba(0, 0, 0, 0.87); +$alert-color:#E04D46; + +$font-family:"Roboto", "Helvetica", "Arial", sans-serif; + +$chart-font-size:10px; + +$normal-font-size:16px; +$medium-font-size:13px; +$small-font-size:10px; + +$button-color:#3f51b5; + +$background-color:#FBFBFB; + +$content-padding: 1px 7px 2px 7px; diff --git a/src/styles/components/app.scss b/src/styles/components/app.scss index 0bdf5c0..dfd74c8 100644 --- a/src/styles/components/app.scss +++ b/src/styles/components/app.scss @@ -1,3 +1,15 @@ +@import 'parameters'; + body { - background-color: Cornsilk; + font-family: $font-family; + color:$font-color; + background-color: $background-color; + display: flex; + flex-flow: column; + + p{ + font-size: 16px; + } + + } diff --git a/src/styles/components/blood/Blood.scss b/src/styles/components/blood/Blood.scss new file mode 100644 index 0000000..0e1bb54 --- /dev/null +++ b/src/styles/components/blood/Blood.scss @@ -0,0 +1,19 @@ + +.card{ + display: flex; + flex-flow: row wrap; + margin: 3px 7px; +} + +.smallCardSections{ + display: flex; + flex-flow: row wrap; +} +.smallCard{ + display: flex; + flex-flow: column wrap; + margin: 3px 7px; + background: white; + border:1px solid rgba(0, 0, 0, 0.125); + width: 46%; +} diff --git a/src/styles/components/blood/BloodBarChart_RBC.scss b/src/styles/components/blood/BloodBarChart_RBC.scss new file mode 100644 index 0000000..efb33ab --- /dev/null +++ b/src/styles/components/blood/BloodBarChart_RBC.scss @@ -0,0 +1,18 @@ +@import '../parameters'; + +.bloodChart{ + font-size: $chart-font-size; + + .recharts-default-legend{ + display: none; + } + tspan{ + display: none; + } + .recharts-cartesian-grid{ + display: none; + } + .recharts-cartesian-axis-ticks{ + display: none; + } +} diff --git a/src/styles/components/blood/BloodBarChart_TLC.scss b/src/styles/components/blood/BloodBarChart_TLC.scss new file mode 100644 index 0000000..efb33ab --- /dev/null +++ b/src/styles/components/blood/BloodBarChart_TLC.scss @@ -0,0 +1,18 @@ +@import '../parameters'; + +.bloodChart{ + font-size: $chart-font-size; + + .recharts-default-legend{ + display: none; + } + tspan{ + display: none; + } + .recharts-cartesian-grid{ + display: none; + } + .recharts-cartesian-axis-ticks{ + display: none; + } +} diff --git a/src/styles/components/blood/BloodChart_WBC.scss b/src/styles/components/blood/BloodChart_WBC.scss new file mode 100644 index 0000000..c41989a --- /dev/null +++ b/src/styles/components/blood/BloodChart_WBC.scss @@ -0,0 +1,12 @@ +@import '../parameters'; + +.bloodChart{ + font-size: $chart-font-size; +} + +.y__position{ + text{ + y:'50'; + transform: rotate(-90,10,50); + } +} diff --git a/src/styles/components/blood/Commentary_WBC.scss b/src/styles/components/blood/Commentary_WBC.scss new file mode 100644 index 0000000..a933f94 --- /dev/null +++ b/src/styles/components/blood/Commentary_WBC.scss @@ -0,0 +1,34 @@ +@import '../parameters'; + +ul{ + list-style: none; +} + +.whiteBloodCellCommentary{ + display: flex; + flex-flow: column wrap; + background-color: white; + padding: 16px; + width: 150px; + + .nav{ + color: $button-color; + } + + h3{ + font-size: $normal-font-size; + margin: 0; + } + .alert{ + color:$alert-color; + padding:0; + border:0; + margin:8px 0; + } + li{ + font-size: $medium-font-size; + } + .explaination{ + list-style: circle; + } +}