Compare commits
10 Commits
first-depl
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
028c0843d4 | ||
|
|
cfb884d169 | ||
|
|
276b976e30 | ||
|
|
7203e04364 | ||
|
|
4c6083634b | ||
|
|
ab8ce14b92 | ||
|
|
51a04011a0 | ||
|
|
ddefba8a0f | ||
|
|
d5f2bffcee | ||
|
|
06d9863aef |
625
package-lock.json
generated
625
package-lock.json
generated
@@ -10,6 +10,7 @@
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.8.2",
|
||||
"@emotion/styled": "^11.8.1",
|
||||
"@material-ui/icons": "^4.11.3",
|
||||
"@mui/icons-material": "^5.5.1",
|
||||
"@mui/material": "^5.5.3",
|
||||
"@testing-library/jest-dom": "^5.16.3",
|
||||
@@ -2902,6 +2903,179 @@
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@material-ui/core": {
|
||||
"version": "4.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz",
|
||||
"integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"@material-ui/styles": "^4.11.5",
|
||||
"@material-ui/system": "^4.12.2",
|
||||
"@material-ui/types": "5.1.0",
|
||||
"@material-ui/utils": "^4.11.3",
|
||||
"@types/react-transition-group": "^4.2.0",
|
||||
"clsx": "^1.0.4",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"popper.js": "1.16.1-lts",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^16.8.0 || ^17.0.0",
|
||||
"react-transition-group": "^4.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/material-ui"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"react": "^16.8.0 || ^17.0.0",
|
||||
"react-dom": "^16.8.0 || ^17.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@material-ui/icons": {
|
||||
"version": "4.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz",
|
||||
"integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.4.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@material-ui/core": "^4.0.0",
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"react": "^16.8.0 || ^17.0.0",
|
||||
"react-dom": "^16.8.0 || ^17.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@material-ui/styles": {
|
||||
"version": "4.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz",
|
||||
"integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"@emotion/hash": "^0.8.0",
|
||||
"@material-ui/types": "5.1.0",
|
||||
"@material-ui/utils": "^4.11.3",
|
||||
"clsx": "^1.0.4",
|
||||
"csstype": "^2.5.2",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"jss": "^10.5.1",
|
||||
"jss-plugin-camel-case": "^10.5.1",
|
||||
"jss-plugin-default-unit": "^10.5.1",
|
||||
"jss-plugin-global": "^10.5.1",
|
||||
"jss-plugin-nested": "^10.5.1",
|
||||
"jss-plugin-props-sort": "^10.5.1",
|
||||
"jss-plugin-rule-value-function": "^10.5.1",
|
||||
"jss-plugin-vendor-prefixer": "^10.5.1",
|
||||
"prop-types": "^15.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/material-ui"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"react": "^16.8.0 || ^17.0.0",
|
||||
"react-dom": "^16.8.0 || ^17.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@material-ui/styles/node_modules/csstype": {
|
||||
"version": "2.6.20",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
|
||||
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@material-ui/system": {
|
||||
"version": "4.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz",
|
||||
"integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"@material-ui/utils": "^4.11.3",
|
||||
"csstype": "^2.5.2",
|
||||
"prop-types": "^15.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/material-ui"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"react": "^16.8.0 || ^17.0.0",
|
||||
"react-dom": "^16.8.0 || ^17.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@material-ui/system/node_modules/csstype": {
|
||||
"version": "2.6.20",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
|
||||
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@material-ui/types": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
|
||||
"integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@types/react": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@material-ui/utils": {
|
||||
"version": "4.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz",
|
||||
"integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^16.8.0 || ^17.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0",
|
||||
"react-dom": "^16.8.0 || ^17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/base": {
|
||||
"version": "5.0.0-alpha.74",
|
||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.74.tgz",
|
||||
@@ -4823,9 +4997,9 @@
|
||||
"integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0="
|
||||
},
|
||||
"node_modules/async": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
||||
"version": "2.6.4",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
|
||||
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
|
||||
"dependencies": {
|
||||
"lodash": "^4.17.14"
|
||||
}
|
||||
@@ -6123,6 +6297,16 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/css-vendor": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
|
||||
"integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.8.3",
|
||||
"is-in-browser": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/css-what": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
|
||||
@@ -6701,11 +6885,11 @@
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"node_modules/ejs": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
|
||||
"integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
|
||||
"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
|
||||
"dependencies": {
|
||||
"jake": "^10.6.1"
|
||||
"jake": "^10.8.5"
|
||||
},
|
||||
"bin": {
|
||||
"ejs": "bin/cli.js"
|
||||
@@ -7813,11 +7997,30 @@
|
||||
}
|
||||
},
|
||||
"node_modules/filelist": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
|
||||
"integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
|
||||
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
|
||||
"dependencies": {
|
||||
"minimatch": "^3.0.4"
|
||||
"minimatch": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/filelist/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/filelist/node_modules/minimatch": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/filename-reserved-regex": {
|
||||
@@ -8789,6 +8992,12 @@
|
||||
"node": ">=10.17.0"
|
||||
}
|
||||
},
|
||||
"node_modules/hyphenate-style-name": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
|
||||
"integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
||||
@@ -9093,6 +9302,12 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-in-browser": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
|
||||
"integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/is-module": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||
@@ -9383,11 +9598,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jake": {
|
||||
"version": "10.8.4",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz",
|
||||
"integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==",
|
||||
"version": "10.8.5",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
|
||||
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
|
||||
"dependencies": {
|
||||
"async": "0.9.x",
|
||||
"async": "^3.2.3",
|
||||
"chalk": "^4.0.2",
|
||||
"filelist": "^1.0.1",
|
||||
"minimatch": "^3.0.4"
|
||||
@@ -9414,9 +9629,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jake/node_modules/async": {
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
|
||||
"integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
|
||||
},
|
||||
"node_modules/jake/node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
@@ -11278,6 +11493,96 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jss": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz",
|
||||
"integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"csstype": "^3.0.2",
|
||||
"is-in-browser": "^1.1.3",
|
||||
"tiny-warning": "^1.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/jss"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-camel-case": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz",
|
||||
"integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"hyphenate-style-name": "^1.0.3",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-default-unit": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz",
|
||||
"integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-global": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz",
|
||||
"integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-nested": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz",
|
||||
"integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-props-sort": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz",
|
||||
"integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-rule-value-function": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz",
|
||||
"integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/jss-plugin-vendor-prefixer": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz",
|
||||
"integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"css-vendor": "^2.0.8",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jsx-ast-utils": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
|
||||
@@ -12403,6 +12708,12 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/popper.js": {
|
||||
"version": "1.16.1-lts",
|
||||
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz",
|
||||
"integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/portfinder": {
|
||||
"version": "1.0.28",
|
||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
|
||||
@@ -15513,6 +15824,12 @@
|
||||
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
|
||||
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
|
||||
},
|
||||
"node_modules/tiny-warning": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
|
||||
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/tmpl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
|
||||
@@ -18821,6 +19138,104 @@
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||
}
|
||||
},
|
||||
"@material-ui/core": {
|
||||
"version": "4.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz",
|
||||
"integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"@material-ui/styles": "^4.11.5",
|
||||
"@material-ui/system": "^4.12.2",
|
||||
"@material-ui/types": "5.1.0",
|
||||
"@material-ui/utils": "^4.11.3",
|
||||
"@types/react-transition-group": "^4.2.0",
|
||||
"clsx": "^1.0.4",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"popper.js": "1.16.1-lts",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^16.8.0 || ^17.0.0",
|
||||
"react-transition-group": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"@material-ui/icons": {
|
||||
"version": "4.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz",
|
||||
"integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@material-ui/styles": {
|
||||
"version": "4.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz",
|
||||
"integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"@emotion/hash": "^0.8.0",
|
||||
"@material-ui/types": "5.1.0",
|
||||
"@material-ui/utils": "^4.11.3",
|
||||
"clsx": "^1.0.4",
|
||||
"csstype": "^2.5.2",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"jss": "^10.5.1",
|
||||
"jss-plugin-camel-case": "^10.5.1",
|
||||
"jss-plugin-default-unit": "^10.5.1",
|
||||
"jss-plugin-global": "^10.5.1",
|
||||
"jss-plugin-nested": "^10.5.1",
|
||||
"jss-plugin-props-sort": "^10.5.1",
|
||||
"jss-plugin-rule-value-function": "^10.5.1",
|
||||
"jss-plugin-vendor-prefixer": "^10.5.1",
|
||||
"prop-types": "^15.7.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"csstype": {
|
||||
"version": "2.6.20",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
|
||||
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==",
|
||||
"peer": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@material-ui/system": {
|
||||
"version": "4.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz",
|
||||
"integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"@material-ui/utils": "^4.11.3",
|
||||
"csstype": "^2.5.2",
|
||||
"prop-types": "^15.7.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"csstype": {
|
||||
"version": "2.6.20",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
|
||||
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==",
|
||||
"peer": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@material-ui/types": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
|
||||
"integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==",
|
||||
"peer": true,
|
||||
"requires": {}
|
||||
},
|
||||
"@material-ui/utils": {
|
||||
"version": "4.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz",
|
||||
"integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.4.4",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^16.8.0 || ^17.0.0"
|
||||
}
|
||||
},
|
||||
"@mui/base": {
|
||||
"version": "5.0.0-alpha.74",
|
||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.74.tgz",
|
||||
@@ -20163,9 +20578,9 @@
|
||||
"integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0="
|
||||
},
|
||||
"async": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
||||
"version": "2.6.4",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
|
||||
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
|
||||
"requires": {
|
||||
"lodash": "^4.17.14"
|
||||
}
|
||||
@@ -21110,6 +21525,16 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"css-vendor": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
|
||||
"integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.8.3",
|
||||
"is-in-browser": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"css-what": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
|
||||
@@ -21550,11 +21975,11 @@
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"ejs": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
|
||||
"integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
|
||||
"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
|
||||
"requires": {
|
||||
"jake": "^10.6.1"
|
||||
"jake": "^10.8.5"
|
||||
}
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
@@ -22363,11 +22788,29 @@
|
||||
}
|
||||
},
|
||||
"filelist": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
|
||||
"integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
|
||||
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
|
||||
"requires": {
|
||||
"minimatch": "^3.0.4"
|
||||
"minimatch": "^5.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||
"requires": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"filename-reserved-regex": {
|
||||
@@ -23068,6 +23511,12 @@
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
||||
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
|
||||
},
|
||||
"hyphenate-style-name": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
|
||||
"integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==",
|
||||
"peer": true
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
||||
@@ -23272,6 +23721,12 @@
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-in-browser": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
|
||||
"integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==",
|
||||
"peer": true
|
||||
},
|
||||
"is-module": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||
@@ -23472,11 +23927,11 @@
|
||||
}
|
||||
},
|
||||
"jake": {
|
||||
"version": "10.8.4",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz",
|
||||
"integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==",
|
||||
"version": "10.8.5",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
|
||||
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
|
||||
"requires": {
|
||||
"async": "0.9.x",
|
||||
"async": "^3.2.3",
|
||||
"chalk": "^4.0.2",
|
||||
"filelist": "^1.0.1",
|
||||
"minimatch": "^3.0.4"
|
||||
@@ -23491,9 +23946,9 @@
|
||||
}
|
||||
},
|
||||
"async": {
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
|
||||
"integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
@@ -24841,6 +25296,92 @@
|
||||
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz",
|
||||
"integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg=="
|
||||
},
|
||||
"jss": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz",
|
||||
"integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"csstype": "^3.0.2",
|
||||
"is-in-browser": "^1.1.3",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-camel-case": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz",
|
||||
"integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"hyphenate-style-name": "^1.0.3",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"jss-plugin-default-unit": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz",
|
||||
"integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"jss-plugin-global": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz",
|
||||
"integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"jss-plugin-nested": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz",
|
||||
"integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-props-sort": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz",
|
||||
"integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"jss-plugin-rule-value-function": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz",
|
||||
"integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"jss": "10.9.0",
|
||||
"tiny-warning": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"jss-plugin-vendor-prefixer": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz",
|
||||
"integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"css-vendor": "^2.0.8",
|
||||
"jss": "10.9.0"
|
||||
}
|
||||
},
|
||||
"jsx-ast-utils": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
|
||||
@@ -25653,6 +26194,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"popper.js": {
|
||||
"version": "1.16.1-lts",
|
||||
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz",
|
||||
"integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==",
|
||||
"peer": true
|
||||
},
|
||||
"portfinder": {
|
||||
"version": "1.0.28",
|
||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
|
||||
@@ -27802,6 +28349,12 @@
|
||||
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
|
||||
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
|
||||
},
|
||||
"tiny-warning": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
|
||||
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
|
||||
"peer": true
|
||||
},
|
||||
"tmpl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.8.2",
|
||||
"@emotion/styled": "^11.8.1",
|
||||
"@material-ui/icons": "^4.11.3",
|
||||
"@mui/icons-material": "^5.5.1",
|
||||
"@mui/material": "^5.5.3",
|
||||
"@testing-library/jest-dom": "^5.16.3",
|
||||
|
||||
15
src/App.js
15
src/App.js
@@ -8,6 +8,7 @@ import Projects from './pages/Projects';
|
||||
import Technologies from './pages/Technologies';
|
||||
import Links from './pages/Links';
|
||||
import CreativeWorks from './pages/CreativeWorks';
|
||||
import Navbar from './components/Navbar';
|
||||
|
||||
function App() {
|
||||
return (
|
||||
@@ -23,13 +24,9 @@ function App() {
|
||||
|
||||
*/}
|
||||
|
||||
<header className="app-navbar">
|
||||
<a href="/" className="my-name">Mikayla Dobson</a>
|
||||
<h2>Web Design Contractor</h2>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<BrowserRouter>
|
||||
<BrowserRouter>
|
||||
<Navbar />
|
||||
<main>
|
||||
<Routes>
|
||||
<Route path='/' element={<Welcome />} />
|
||||
<Route path='/about-me' element={<AboutMe />} />
|
||||
@@ -38,8 +35,8 @@ function App() {
|
||||
<Route path='/links' element={<Links />} />
|
||||
<Route path='/creative-works' element={<CreativeWorks />} />
|
||||
</Routes>
|
||||
</BrowserRouter>
|
||||
</main>
|
||||
</main>
|
||||
</BrowserRouter>
|
||||
|
||||
</div>
|
||||
);
|
||||
|
||||
144
src/App.scss
144
src/App.scss
@@ -1,17 +1,57 @@
|
||||
// STYLESHEET FOR ABOUT MIKAYLA SITE
|
||||
// STRUCTURE OF THIS FILE AS FOLLOWS:
|
||||
|
||||
// font imports
|
||||
// variable declarations
|
||||
// main app styles:
|
||||
// ---- navbar
|
||||
// welcome page
|
||||
// technologies page
|
||||
// about me page
|
||||
// projects page
|
||||
|
||||
////////////////
|
||||
////////////////
|
||||
////////////////
|
||||
////////////////
|
||||
////////////////
|
||||
|
||||
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap');
|
||||
|
||||
$pink50: #fce4ec;
|
||||
$purple100: #e1bee7;
|
||||
$purple200: #ce93d8;
|
||||
|
||||
.App {
|
||||
text-align: center;
|
||||
header {
|
||||
.app-navbar {
|
||||
background-color: $purple200;
|
||||
height: 4.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid black;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 100vw;
|
||||
z-index: 9;
|
||||
|
||||
.navbar-left {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
width: 50%;
|
||||
justify-content: flex-start;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.navbar-right {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
padding-right: 1rem;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
a {
|
||||
transition: color 150ms ease;
|
||||
color: black;
|
||||
@@ -35,6 +75,39 @@ $purple200: #ce93d8;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
}
|
||||
main {
|
||||
position: relative;
|
||||
top: 4.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.welcome-page {
|
||||
@keyframes sideToSide {
|
||||
from {
|
||||
transform: rotate(-1deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(1deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(-1deg);
|
||||
}
|
||||
}
|
||||
|
||||
#header-card {
|
||||
height: 18rem;
|
||||
animation: sideToSide 10s infinite;
|
||||
}
|
||||
#welcome-info {
|
||||
margin: 2rem 0;
|
||||
width: 75%;
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
padding: 0.6rem;
|
||||
animation: sideToSide 15s infinite;
|
||||
}
|
||||
}
|
||||
|
||||
.technologies-page {
|
||||
@@ -115,6 +188,11 @@ $purple200: #ce93d8;
|
||||
}
|
||||
|
||||
.about-me-page {
|
||||
h1 {
|
||||
color: darkblue;
|
||||
font-weight: 800;
|
||||
font-size: 4rem;
|
||||
}
|
||||
a {
|
||||
color: white;
|
||||
border-radius: 12px;
|
||||
@@ -145,10 +223,6 @@ $purple200: #ce93d8;
|
||||
.fade {
|
||||
opacity: 0;
|
||||
transition: 0.5s transform ease;
|
||||
&:hover {
|
||||
transform: scale(115%) translateY(-1.5rem);
|
||||
transition: 0.5s transform ease;
|
||||
}
|
||||
|
||||
&.one {
|
||||
@include staggered-entry(0);
|
||||
@@ -163,10 +237,60 @@ $purple200: #ce93d8;
|
||||
}
|
||||
|
||||
.projects-page {
|
||||
.MuiPaper-root {
|
||||
.filter-panel {
|
||||
display: flex;
|
||||
position: static;
|
||||
flex-direction: column;
|
||||
background-color: white;
|
||||
align-items: center;
|
||||
padding: 1rem;
|
||||
width: 75%;
|
||||
height: 15rem;
|
||||
margin-top: 3rem;
|
||||
width: 40vw;
|
||||
border-radius: 12px;
|
||||
margin-bottom: 2rem;
|
||||
transition: align-items 1s ease,
|
||||
position 1s ease
|
||||
;
|
||||
|
||||
.filter-controls {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
}
|
||||
.filter-anim-one {
|
||||
position: sticky;
|
||||
left: 2rem;
|
||||
top: 6rem;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
.filter-anim-two {
|
||||
|
||||
}
|
||||
|
||||
.project-cards {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 2rem;
|
||||
|
||||
> * {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
background-color: lightblue;
|
||||
width: 80%;
|
||||
height: auto;
|
||||
margin-bottom: 2rem;
|
||||
.links {
|
||||
display: flex;
|
||||
width: 75%;
|
||||
align-items: baseline;
|
||||
justify-content: space-around;
|
||||
}
|
||||
a:last-child {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
94
src/components/Navbar.js
Normal file
94
src/components/Navbar.js
Normal file
@@ -0,0 +1,94 @@
|
||||
import { Button, Drawer, List, ListItem } from "@mui/material"
|
||||
import { useEffect, useState } from "react"
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import MenuIcon from '@material-ui/icons/Menu';
|
||||
|
||||
export default function Navbar() {
|
||||
const [open, setOpen] = useState(false);
|
||||
const [selected, setSelected] = useState(null);
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
switch (selected) {
|
||||
case 0:
|
||||
navigate('/');
|
||||
break;
|
||||
case 1:
|
||||
navigate('/about-me');
|
||||
break;
|
||||
case 2:
|
||||
navigate('/projects');
|
||||
break;
|
||||
case 3:
|
||||
navigate('/technologies');
|
||||
break;
|
||||
case 4:
|
||||
navigate('/links');
|
||||
break;
|
||||
case 5:
|
||||
navigate('/creative-works');
|
||||
break;
|
||||
default:
|
||||
navigate('/');
|
||||
break;
|
||||
}
|
||||
}, [selected, navigate]);
|
||||
|
||||
return (
|
||||
<header className="app-navbar">
|
||||
<div className="navbar-left">
|
||||
<a href="/" className="my-name">Mikayla Dobson</a>
|
||||
<h2>Web Design Contractor</h2>
|
||||
</div>
|
||||
|
||||
<div className="navbar-right">
|
||||
<Button onClick={() => setOpen(!open)}>
|
||||
<MenuIcon />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<Drawer anchor="right" open={open} onClose={() => setOpen(false)}>
|
||||
<List component="nav">
|
||||
|
||||
<ListItem button
|
||||
selected={selected===0}
|
||||
onClick={() => setSelected(0)}>
|
||||
Home
|
||||
</ListItem>
|
||||
|
||||
<ListItem button
|
||||
selected={selected===1}
|
||||
onClick={() => setSelected(1)}>
|
||||
About me
|
||||
</ListItem>
|
||||
|
||||
<ListItem button
|
||||
selected={selected===2}
|
||||
onClick={() => setSelected(2)}>
|
||||
My Projects
|
||||
</ListItem>
|
||||
|
||||
<ListItem button
|
||||
selected={selected===3}
|
||||
onClick={() => setSelected(3)}>
|
||||
My Technologies
|
||||
</ListItem>
|
||||
|
||||
<ListItem button
|
||||
selected={selected===4}
|
||||
onClick={() => setSelected(4)}>
|
||||
Links
|
||||
</ListItem>
|
||||
|
||||
<ListItem button
|
||||
selected={selected===5}
|
||||
onClick={() => setSelected(5)}>
|
||||
My Creative Work
|
||||
</ListItem>
|
||||
</List>
|
||||
</Drawer>
|
||||
</header>
|
||||
)
|
||||
}
|
||||
136
src/components/ProjectsArray.js
Normal file
136
src/components/ProjectsArray.js
Normal file
@@ -0,0 +1,136 @@
|
||||
import { Card } from "@mui/material";
|
||||
|
||||
export const projectsArray = [
|
||||
{
|
||||
name: "Mikayla's E-Commerce Store",
|
||||
languages: ["TypeScript", "React", "PERN", "REST_API"],
|
||||
inProgress: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Mikayla's E-Commerce Store</h1>
|
||||
<p>A fully-featured e-commerce platform</p>
|
||||
<p>Built in React with TypeScript, Node/Express, and PostgreSQL</p>
|
||||
<p>Payment processing supported through Stripe</p>
|
||||
<p>REST API fully documented in Swagger</p>
|
||||
<p>IN PROGRESS</p>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Procedural Drones",
|
||||
languages: ["JavaScript", "HTML/CSS"],
|
||||
inProgress: true,
|
||||
deployed: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Procedural Drones</h1>
|
||||
<p>An experimental space for building out procedural music generation using vanilla JavaScript</p>
|
||||
<p>Uses Tone.js to interact with the Web Audio API</p>
|
||||
<p>Features a plain HTML/CSS front end to interact with the program</p>
|
||||
<div className="links">
|
||||
<a target="_blank" rel="noreferrer" href="https://github.com/innocuous-symmetry/procedural-drones-01">GitHub Repo</a>
|
||||
<a target="_blank" rel="noreferrer" href="https://innocuous-symmetry.github.io/procedural-drones-01/">Deployed version</a>
|
||||
</div>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Reddit, but it's all cats",
|
||||
languages: ["React", "Redux"],
|
||||
inProgress: false,
|
||||
deployed: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Reddit, but it's all cats</h1>
|
||||
<p>A read-only Reddit client -- this site fetches data from Reddit and displays a curated feed.</p>
|
||||
<p>This was built on Reddit's JSON API, using React/Redux and CSS.</p>
|
||||
<p>And yes, it's all cats.</p>
|
||||
<div className="links">
|
||||
<a target="_blank" rel="noreferrer" href="https://github.com/innocuous-symmetry/cat-reddit">GitHub Repo</a>
|
||||
<a target="_blank" rel="noreferrer" href="https://reddit-but-all-cats.netlify.app/">Deployed version</a>
|
||||
</div>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Personal Timestamp Generator",
|
||||
languages: ["Python", "SQLite"],
|
||||
inProgress: false,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Personal Timestamp Generator</h1>
|
||||
<p>A small-scale timestamp/productivity management tool for individual use and logging of
|
||||
time, including compartmentalization by task and some aggregate functions based on queries.
|
||||
</p>
|
||||
<p>Command-line interface built on Python with a SQLite Database.</p>
|
||||
<a href="https://github.com/innocuous-symmetry/timestamp_project" target="_blank" rel="noreferrer">View the repo here!</a>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Musical Counterpoint Bot",
|
||||
languages: ["HTML/CSS", "JavaScript"],
|
||||
inProgress: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Musical Counterpoint Bot</h1>
|
||||
<p>A web-based program with functionality to evaluate sample solutions of problems in
|
||||
species-based counterpoint, as detailed by Johann Fux in <em>Gradus ad Parnassum.</em></p>
|
||||
<p>This project is intended to be used as a practical application of linked lists and
|
||||
other compound data structures in JavaScript.</p>
|
||||
<p>In progress. Using vanilla HTML/CSS/JS.</p>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Password Game",
|
||||
languages: ["React", "MongoDB", "MERN", "React", "REST_API", "Socket.io", "Sass", "MaterialUI"],
|
||||
inProgress: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Password Game</h1>
|
||||
<p>As part of a mentorship program hosted by Metazu Studio</p>
|
||||
<p>Implemented using MongoDB, React, and Node/Express, styled with Material UI/SCSS.</p>
|
||||
<p>In progress, building in collaboration with others at Metazu Studio.</p>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Splinter",
|
||||
languages: ["React", "PERN", "Socket.io"],
|
||||
inProgress: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Splinter</h1>
|
||||
<p>A clone of a popular card-based resource gathering game</p>
|
||||
<p>Local multiplayer, with plans to build out online multiplayer and solo vs. CPU</p>
|
||||
<p>In progress. Using React, Node/Express, and PostgreSQL.</p>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "Carenest",
|
||||
languages: ["React"],
|
||||
inProgress: false,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>Carenest</h1>
|
||||
<p>Designed in collaboration with Faith Magras, Elvis Hernandez, and Daytreon Dean
|
||||
as a submission for #HACKTN in March 2022.</p>
|
||||
<p>Produced using React. View the repo <a target="_blank" rel="noreferrer" href="https://github.com/Team-Carenest/carenest">here!</a></p>
|
||||
</Card>
|
||||
)
|
||||
},
|
||||
{
|
||||
name: "This Site",
|
||||
languages: ["React", "Sass", "MaterialUI"],
|
||||
inProgress: true,
|
||||
jsx: (
|
||||
<Card>
|
||||
<h1>And, last but not least, the site you see here!</h1>
|
||||
<p>This site is built using React, Material UI, and SCSS, and is hosted with Netlify.</p>
|
||||
<a target="_blank" rel="noreferrer" href="https://github.com/innocuous-symmetry/about-mikayla">View the site repo here!</a>
|
||||
</Card>
|
||||
)
|
||||
}
|
||||
]
|
||||
@@ -4,12 +4,12 @@ import { DocumentStyle, AboutMePage } from '../styles/Style';
|
||||
import Card from '@mui/material/Card';
|
||||
|
||||
const { htmlTheme } = DocumentStyle;
|
||||
const { headerCard, projectCards, cardDimensions, aboutGallery } = AboutMePage;
|
||||
const { projectCards, cardDimensions, aboutGallery } = AboutMePage;
|
||||
|
||||
export default function AboutMe() {
|
||||
return (
|
||||
<div style={htmlTheme} className="about-me-page">
|
||||
<Card sx={[headerCard, cardDimensions]} className="card-title">What I Do:</Card>
|
||||
<h1 className="what-i-do-header">What I Do:</h1>
|
||||
|
||||
<div style={aboutGallery}>
|
||||
<Card sx={[projectCards, cardDimensions]} className="fade one">
|
||||
|
||||
@@ -1,101 +1,120 @@
|
||||
import { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { DocumentStyle } from '../styles/Style';
|
||||
import { projectsArray } from '../components/ProjectsArray';
|
||||
import { Divider } from '@mui/material';
|
||||
import '../App.scss';
|
||||
import { useState } from 'react';
|
||||
|
||||
import { DocumentStyle, ProjectsPage } from '../styles/Style';
|
||||
const { htmlTheme, dividerStyle } = DocumentStyle;
|
||||
|
||||
import Button from '@mui/material/Button';
|
||||
import Card from '@mui/material/Card';
|
||||
|
||||
const { htmlTheme, stockGallery } = DocumentStyle;
|
||||
const { projectsButton } = ProjectsPage;
|
||||
const defaultFilter = {
|
||||
language: '',
|
||||
searchTerm: '',
|
||||
inProgress: false
|
||||
}
|
||||
|
||||
export default function Projects() {
|
||||
const galleryArray = [
|
||||
(
|
||||
<Card>
|
||||
<h1>Reddit, but it's all cats</h1>
|
||||
<p>A read-only Reddit client -- this site fetches data from Reddit and displays a curated feed.</p>
|
||||
<p>This was built on Reddit's JSON API, using React/Redux and CSS.</p>
|
||||
<p>And yes, it's all cats.</p>
|
||||
<a href="https://reddit-but-all-cats.netlify.app/" target="_blank" rel="noreferrer">View the deployed project!</a>
|
||||
</Card>
|
||||
),
|
||||
(
|
||||
<Card>
|
||||
<h1>Personal Timestamp Generator</h1>
|
||||
<p>A small-scale timestamp/productivity management tool for individual use and logging of
|
||||
time, including compartmentalization by task and some aggregate functions based on queries.
|
||||
</p>
|
||||
<p>Command-line interface built on Python with a SQLite Database.</p>
|
||||
<a href="https://github.com/innocuous-symmetry/timestamp_project" target="_blank" rel="noreferrer">View the repo here!</a>
|
||||
</Card>
|
||||
),
|
||||
(
|
||||
<Card>
|
||||
<h1>Musical Counterpoint Bot</h1>
|
||||
<p>A web-based program with functionality to evaluate sample solutions of problems in
|
||||
species-based counterpoint, as detailed by Johann Fux in <em>Gradus ad Parnassum.</em></p>
|
||||
<p>This project is intended to be used as a practical application of linked lists and
|
||||
other compound data structures in JavaScript.</p>
|
||||
<p>In progress. Using vanilla HTML/CSS/JS.</p>
|
||||
</Card>
|
||||
),
|
||||
(
|
||||
<Card>
|
||||
<h1>(untitled) Online Guess-the-Word Game</h1>
|
||||
<p>As part of a mentorship program hosted by Metazu Studio</p>
|
||||
<p>Implemented using MongoDB, React, and Node/Express, styled with Material UI/SCSS.</p>
|
||||
<p>In progress, building in collaboration with others at Metazu Studio.</p>
|
||||
</Card>
|
||||
),
|
||||
(
|
||||
<Card>
|
||||
<h1>Splinter</h1>
|
||||
<p>A clone of a popular card-based resource gathering game</p>
|
||||
<p>Local multiplayer, with plans to build out online multiplayer and solo vs. CPU</p>
|
||||
<p>In progress. Using React, Node/Express, and PostgreSQL.</p>
|
||||
</Card>
|
||||
),
|
||||
(
|
||||
<Card>
|
||||
<h1>Carenest</h1>
|
||||
<p>Designed in collaboration with Faith Magras, Elvis Hernandez, and Daytreon Dean
|
||||
as a submission for #HACKTN in March 2022.</p>
|
||||
<p>Produced using React. View the repo <a target="_blank" rel="noreferrer" href="https://github.com/Team-Carenest/carenest">here!</a></p>
|
||||
</Card>
|
||||
),
|
||||
(
|
||||
<Card>
|
||||
<h1>And, last but not least, the site you see here!</h1>
|
||||
<p>This site is built using React, Material UI, and SCSS, and is hosted on Github Pages.</p>
|
||||
</Card>
|
||||
),
|
||||
]
|
||||
const [results, setResults] = useState();
|
||||
const [filter, setFilter] = useState(defaultFilter);
|
||||
const [panelStyle, setPanelStyle] = useState('');
|
||||
|
||||
const [galleryIndex, setGalleryIndex] = useState(0);
|
||||
const searchInput = useRef();
|
||||
const languageFilter = useRef();
|
||||
const projectPage = useRef();
|
||||
|
||||
const handleDecrement = () => {
|
||||
setGalleryIndex((prev) => {
|
||||
let newValue = prev - 1;
|
||||
if (newValue === -1) {
|
||||
newValue = galleryArray.length - 1;
|
||||
useEffect(() => {
|
||||
if (!filter) setResults(projectsArray.map(each => each.jsx));
|
||||
|
||||
if (filter) {
|
||||
let result = projectsArray;
|
||||
if (filter.searchTerm) {
|
||||
let termLower = filter.searchTerm.toLowerCase();
|
||||
result = result.filter(obj => obj.name.toLowerCase().includes(termLower));
|
||||
}
|
||||
return newValue;
|
||||
});
|
||||
if (filter.language) {
|
||||
let adjustedLang = ((filter.language === 'PostgreSQL' || filter.language === "Express") ? "PERN" : filter.language);
|
||||
result = result.filter(obj => obj.languages.includes(adjustedLang));
|
||||
}
|
||||
|
||||
if (filter.inProgress) result = result.filter(obj => !obj.inProgress);
|
||||
|
||||
setResults(result.map(each => each.jsx));
|
||||
}
|
||||
}, [filter]);
|
||||
|
||||
const handleChange = (e) => {
|
||||
e.preventDefault();
|
||||
setFilter({
|
||||
...filter,
|
||||
language: e.target.value
|
||||
})
|
||||
}
|
||||
|
||||
const handleIncrement = () => {
|
||||
setGalleryIndex(prev => (prev + 1) % galleryArray.length);
|
||||
const handleReset = () => {
|
||||
setFilter(defaultFilter);
|
||||
searchInput.current.value = '';
|
||||
languageFilter.current.value = '';
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
const handleScroll = (e) => {
|
||||
let position = window.scrollY;
|
||||
|
||||
if (position > 150) {
|
||||
setPanelStyle("filter-anim-one");
|
||||
} else {
|
||||
setPanelStyle("");
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', handleScroll);
|
||||
|
||||
return () => {
|
||||
window.removeEventListener('scroll', handleScroll);
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
console.log(panelStyle);
|
||||
}, [panelStyle]);
|
||||
|
||||
return (
|
||||
<div className="projects-page" style={htmlTheme}>
|
||||
<h1>Here are some sample projects from my portfolio!</h1>
|
||||
<h1>Check out these projects from my portfolio!</h1>
|
||||
|
||||
<div style={stockGallery}>
|
||||
<Button style={projectsButton} onClick={handleDecrement}>{'<'}</Button>
|
||||
{galleryArray[galleryIndex]}
|
||||
<Button style={projectsButton} onClick={handleIncrement}>{'>'}</Button>
|
||||
<section className={`filter-panel ${panelStyle}`}>
|
||||
<h2>Filter by:</h2>
|
||||
<div className="filter-controls">
|
||||
<input
|
||||
ref={searchInput} type="text"
|
||||
onChange={(e) => setFilter({...filter, searchTerm: e.target.value})}
|
||||
placeholder="Enter a search term">
|
||||
</input>
|
||||
<select ref={languageFilter} onChange={handleChange} name="language" id="language">
|
||||
<option value="">- Language -</option>
|
||||
<option value="Express">Express</option>
|
||||
<option value="JavaScript">JavaScript</option>
|
||||
<option value="MaterialUI">Material UI</option>
|
||||
<option value="MongoDB">MongoDB</option>
|
||||
<option value="PostgreSQL">PostgreSQL</option>
|
||||
<option value="Python">Python</option>
|
||||
<option value="React">React</option>
|
||||
<option value="Redux">Redux</option>
|
||||
<option value="REST_API">REST API</option>
|
||||
<option value="Sass">Sass</option>
|
||||
<option value="SQLite">SQLite</option>
|
||||
<option value="TypeScript">TypeScript</option>
|
||||
</select>
|
||||
<button onClick={() => setFilter({...filter, inProgress: !filter.inProgress})}>
|
||||
{filter.inProgress ? "Show" : "Hide"} in-progress
|
||||
</button>
|
||||
<button onClick={handleReset}>Reset</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<Divider orientation="horizontal" sx={dividerStyle} />
|
||||
|
||||
<div className="project-cards">
|
||||
{results}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -1,140 +1,33 @@
|
||||
import '../App.scss';
|
||||
import { useEffect, useState, useRef } from 'react';
|
||||
|
||||
// MUI components
|
||||
|
||||
import Avatar from '@mui/material/Avatar';
|
||||
import Button from '@mui/material/Button';
|
||||
import Card from '@mui/material/Card';
|
||||
import Divider from '@mui/material/Divider';
|
||||
import { Avatar, Button, Card, Divider } from '@mui/material';
|
||||
import profile from '../media/profile.jpeg';
|
||||
|
||||
// SX style object imports
|
||||
|
||||
import { DocumentStyle, WelcomePage } from '../styles/Style';
|
||||
|
||||
const {
|
||||
pageTheme, galleryTheme, galleryRow,
|
||||
galleryPages, welcomeFooter,
|
||||
mainHeaderCard
|
||||
} = WelcomePage;
|
||||
|
||||
const { pageTheme, galleryTheme, galleryRow, galleryPages, welcomeFooter, mainHeaderCard } = WelcomePage;
|
||||
const { buttonStyle, galleryArrowStyle, galleryCards, dividerStyle } = DocumentStyle;
|
||||
|
||||
// Web page logic
|
||||
|
||||
export default function Welcome() {
|
||||
const [gallery, setGallery] = useState([0,1]);
|
||||
const [rendered, setRendered] = useState();
|
||||
|
||||
// identifiers
|
||||
const cardOne = useRef();
|
||||
const cardTwo = useRef();
|
||||
const cardThree = useRef();
|
||||
const cardFour = useRef();
|
||||
const cardFive = useRef();
|
||||
|
||||
const buttonOne = useRef();
|
||||
const buttonTwo = useRef();
|
||||
const buttonThree = useRef();
|
||||
const buttonFour = useRef();
|
||||
const buttonFive = useRef();
|
||||
|
||||
|
||||
// change active page indicator beneath gallery
|
||||
useEffect(() => {
|
||||
|
||||
const allCardRefs = [cardOne, cardTwo, cardThree, cardFour, cardFive];
|
||||
const galleryButtons = [
|
||||
<Button ref={buttonOne} variant="contained" href="/about-me" sx={buttonStyle}>What kinds of things do I do?</Button>,
|
||||
<Button ref={buttonTwo} variant="contained" href="/technologies" sx={buttonStyle}>What do I use to do it?</Button>,
|
||||
<Button ref={buttonThree} variant="contained" href="/projects" sx={buttonStyle}>What projects am I working on now?</Button>,
|
||||
<Button ref={buttonFour} variant="contained" href="/links" sx={buttonStyle}>Where can you find more about me and my work?</Button>,
|
||||
<Button ref={buttonFive} variant="contained" href="/creative-works" sx={buttonStyle}>Where can I listen to some of your music?</Button>
|
||||
];
|
||||
|
||||
setRendered([
|
||||
galleryButtons[gallery[0]], galleryButtons[gallery[1]]
|
||||
]);
|
||||
|
||||
for (let each of allCardRefs) {
|
||||
// inactive style
|
||||
each.current.style.backgroundColor = '#ede7f6';
|
||||
}
|
||||
|
||||
for (let each of gallery) {
|
||||
// active style
|
||||
allCardRefs[each].current.style.backgroundColor = "#673ab7";
|
||||
}
|
||||
|
||||
}, [gallery, setRendered]);
|
||||
|
||||
// gallery page change logic
|
||||
|
||||
/**
|
||||
*
|
||||
* TO DO: port these functions to external utils
|
||||
* these will need to take parameters: array as state, callback function to set state
|
||||
* @param1 = array (stateful object)
|
||||
* @param2 = array of React components to map through
|
||||
* @param3 = callback function to set state
|
||||
*
|
||||
* In below:
|
||||
* @param1 = gallery
|
||||
* @param2 = galleryButtons
|
||||
* @param3 = setGallery
|
||||
*
|
||||
*/
|
||||
|
||||
const handleDecrement = () => {
|
||||
let newState = [];
|
||||
for (let each of gallery) {
|
||||
let newNum = each - 1;
|
||||
if (newNum === -1) {
|
||||
newNum = 4;
|
||||
}
|
||||
newState.push(newNum);
|
||||
}
|
||||
setGallery(newState);
|
||||
}
|
||||
|
||||
const handleIncrement = () => {
|
||||
let newState = [];
|
||||
for (let each of gallery) {
|
||||
let newNum = (each + 1) % 5;
|
||||
newState.push(newNum);
|
||||
}
|
||||
setGallery(newState);
|
||||
}
|
||||
|
||||
// render
|
||||
return (
|
||||
<div className="welcome-page" style={pageTheme}>
|
||||
<Card sx={mainHeaderCard} elevation={5}>
|
||||
<Card id="header-card" sx={mainHeaderCard} elevation={5}>
|
||||
<Avatar alt="Mikayla Dobson" src={profile} sx={{width: 110, height: 110}} />
|
||||
<h3>Hi, my name is Mikayla! I'm a junior-level full stack web developer.</h3>
|
||||
<p>I excel in building well-structured and maintainable web applications, managing algorithmic complexity,
|
||||
and adapting my workflow to fit the needs of any environment I should find myself in.
|
||||
</p>
|
||||
<h4 className="do-stuff">Thanks for visiting! Feel free to peruse below:</h4>
|
||||
</Card>
|
||||
|
||||
<Divider orientation="horizontal" sx={dividerStyle} />
|
||||
|
||||
<div style={galleryTheme} className="gallery">
|
||||
<div style={galleryRow}>
|
||||
<Button sx={galleryArrowStyle} onClick={handleDecrement}>{'<'}</Button>
|
||||
{rendered}
|
||||
<Button sx={galleryArrowStyle} onClick={handleIncrement}>{'>'}</Button>
|
||||
</div>
|
||||
<div style={galleryPages}>
|
||||
<Card ref={cardOne} sx={galleryCards} />
|
||||
<Card ref={cardTwo} sx={galleryCards} />
|
||||
<Card ref={cardThree} sx={galleryCards} />
|
||||
<Card ref={cardFour} sx={galleryCards} />
|
||||
<Card ref={cardFive} sx={galleryCards} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Card id="welcome-info">
|
||||
<p>
|
||||
I am a junior-level full stack web developer based in Nashville, Tennessee. I build responsive, well-designed web applications with emphasis on concise solutions to problems, self-documenting code, and elegance of design. Some of my most frequently used technologies include React, Redux, Node.js, Express, TypeScript, Vite, PostgreSQL, MongoDB, and Sass, among others.
|
||||
</p>
|
||||
</Card>
|
||||
|
||||
<Divider orientation="horizontal" sx={dividerStyle} />
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ export const DocumentStyle = {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
height: '100vh',
|
||||
minHeight: '100vh',
|
||||
height: '100%',
|
||||
},
|
||||
linkStyle: {
|
||||
color: deepPurple[300],
|
||||
@@ -73,6 +74,7 @@ export const WelcomePage = {
|
||||
backgroundColor: pink[50],
|
||||
alignItems: 'center',
|
||||
fontSize: '1.2rem',
|
||||
borderRadius: '12px'
|
||||
},
|
||||
galleryTheme: {
|
||||
display: 'flex',
|
||||
|
||||
Reference in New Issue
Block a user