diff --git a/.gitignore b/.gitignore
index e85f4eb..7c7d8ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,7 @@
# misc
.DS_Store
+.env
.env.local
.env.development.local
.env.test.local
diff --git a/package-lock.json b/package-lock.json
index b996efc..76dbadb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,11 +8,17 @@
"name": "plavel",
"version": "0.1.0",
"dependencies": {
+ "@material-ui/core": "^4.12.4",
+ "@material-ui/icons": "^4.11.3",
+ "@material-ui/lab": "^4.0.0-alpha.61",
"@react-google-maps/api": "^2.19.2",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^13.0.0",
"@testing-library/user-event": "^13.2.1",
+ "axios": "^1.6.7",
"framer-motion": "^10.17.9",
+ "google-map-react": "^2.2.1",
+ "http-proxy-middleware": "^2.0.6",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.21.1",
@@ -2549,6 +2555,11 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "node_modules/@emotion/hash": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+ },
"node_modules/@emotion/is-prop-valid": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
@@ -3237,6 +3248,228 @@
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
"license": "MIT"
},
+ "node_modules/@mapbox/point-geometry": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
+ "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
+ },
+ "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==",
+ "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.",
+ "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/core/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==",
+ "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.",
+ "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/core/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==",
+ "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/core/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==",
+ "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/@material-ui/core/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
+ },
+ "node_modules/@material-ui/core/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+ },
+ "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/lab": {
+ "version": "4.0.0-alpha.61",
+ "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz",
+ "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==",
+ "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.",
+ "dependencies": {
+ "@babel/runtime": "^7.4.4",
+ "@material-ui/utils": "^4.11.3",
+ "clsx": "^1.0.4",
+ "prop-types": "^15.7.2",
+ "react-is": "^16.8.0 || ^17.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "@material-ui/core": "^4.12.1",
+ "@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/lab/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==",
+ "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/@material-ui/lab/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+ },
+ "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==",
+ "peerDependencies": {
+ "@types/react": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -4299,10 +4532,9 @@
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "18.2.46",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.46.tgz",
- "integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==",
- "license": "MIT",
+ "version": "17.0.75",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.75.tgz",
+ "integrity": "sha512-MSA+NzEzXnQKrqpO63CYqNstFjsESgvJAdAyyJ1n6ZQq/GLgf6nOfIKwk+Twuz0L1N6xPe+qz5xRCJrbhMaLsw==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -4318,6 +4550,14 @@
"@types/react": "*"
}
},
+ "node_modules/@types/react-transition-group": {
+ "version": "4.4.10",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz",
+ "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@@ -5356,6 +5596,29 @@
"node": ">=4"
}
},
+ "node_modules/axios": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
+ "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
+ "dependencies": {
+ "follow-redirects": "^1.15.4",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/axobject-query": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
@@ -6008,6 +6271,14 @@
"wrap-ansi": "^7.0.0"
}
},
+ "node_modules/clsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
+ "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -6576,6 +6847,15 @@
"node": ">=8.0.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==",
+ "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",
@@ -7050,6 +7330,15 @@
"utila": "~0.4"
}
},
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
"node_modules/dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
@@ -8944,6 +9233,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/google-map-react": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/google-map-react/-/google-map-react-2.2.1.tgz",
+ "integrity": "sha512-Dg8aexf5rNSmywj0XKQ5m4RNzVcWwKEM2BGDj5aPChD0um8ZRjB5Upcb/yg/i0oG1aES29asQ5+6BHVgrK5xGA==",
+ "dependencies": {
+ "@googlemaps/js-api-loader": "^1.13.8",
+ "@mapbox/point-geometry": "^0.1.0",
+ "eventemitter3": "^4.0.4",
+ "prop-types": "^15.7.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -9085,6 +9392,19 @@
"he": "bin/he"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
"node_modules/hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -9317,7 +9637,6 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
"integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
- "license": "MIT",
"dependencies": {
"@types/http-proxy": "^1.17.8",
"http-proxy": "^1.18.1",
@@ -9359,6 +9678,11 @@
"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=="
+ },
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -9746,6 +10070,11 @@
"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=="
+ },
"node_modules/is-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
@@ -11227,6 +11556,88 @@
"node": ">=0.10.0"
}
},
+ "node_modules/jss": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz",
+ "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==",
+ "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.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz",
+ "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "hyphenate-style-name": "^1.0.3",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-default-unit": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz",
+ "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-global": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz",
+ "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-nested": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz",
+ "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0",
+ "tiny-warning": "^1.0.2"
+ }
+ },
+ "node_modules/jss-plugin-props-sort": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz",
+ "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-rule-value-function": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz",
+ "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0",
+ "tiny-warning": "^1.0.2"
+ }
+ },
+ "node_modules/jss-plugin-vendor-prefixer": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz",
+ "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "css-vendor": "^2.0.8",
+ "jss": "10.10.0"
+ }
+ },
"node_modules/jsx-ast-utils": {
"version": "3.3.5",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
@@ -12504,6 +12915,11 @@
"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=="
+ },
"node_modules/postcss": {
"version": "8.4.33",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
@@ -13891,6 +14307,11 @@
"node": ">= 0.10"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
@@ -14254,6 +14675,21 @@
"react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -16217,6 +16653,11 @@
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
"license": "MIT"
},
+ "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=="
+ },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
diff --git a/package.json b/package.json
index 7275190..85e8633 100644
--- a/package.json
+++ b/package.json
@@ -3,11 +3,17 @@
"version": "0.1.0",
"private": true,
"dependencies": {
+ "@material-ui/core": "^4.12.4",
+ "@material-ui/icons": "^4.11.3",
+ "@material-ui/lab": "^4.0.0-alpha.61",
"@react-google-maps/api": "^2.19.2",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^13.0.0",
"@testing-library/user-event": "^13.2.1",
+ "axios": "^1.6.7",
"framer-motion": "^10.17.9",
+ "google-map-react": "^2.2.1",
+ "http-proxy-middleware": "^2.0.6",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.21.1",
diff --git a/public/index.html b/public/index.html
index b3177bc..d3e7511 100644
--- a/public/index.html
+++ b/public/index.html
@@ -25,6 +25,7 @@
Learn how to configure a non-root public URL by running `npm run build`.
-->
PLAVEL
+
diff --git a/src/api/travelAdvisorAPI.js b/src/api/travelAdvisorAPI.js
new file mode 100644
index 0000000..305bc7a
--- /dev/null
+++ b/src/api/travelAdvisorAPI.js
@@ -0,0 +1,42 @@
+/* eslint-disable consistent-return */
+import axios from 'axios';
+
+export const getPlacesData = async (type, sw, ne) => {
+ try {
+ const { data: { data } } = await axios.get(`https://travel-advisor.p.rapidapi.com/${type}/list-in-boundary`, {
+ params: {
+ bl_latitude: sw.lat,
+ bl_longitude: sw.lng,
+ tr_longitude: ne.lng,
+ tr_latitude: ne.lat,
+ },
+ headers: {
+ //'x-rapidapi-key': '484f896e47mshf795dcbd9f1494dp103a03jsn51638eb12716',
+ 'x-rapidapi-key': process.env.REACT_APP_RAPIDAPI_TRAVEL_API_KEY,
+ 'x-rapidapi-host': 'travel-advisor.p.rapidapi.com',
+ },
+ });
+
+ return data;
+ } catch (error) {
+ console.log(error);
+ }
+};
+
+// export const getWeatherData = async (lat, lng) => {
+// try {
+// if (lat && lng) {
+// const { data } = await axios.get('https://open-weather-map27.p.rapidapi.com/weather', {
+// params: { lat, lon: lng },
+// headers: {
+// 'x-rapidapi-key': '484f896e47mshf795dcbd9f1494dp103a03jsn51638eb12716',
+// 'x-rapidapi-host': 'open-weather-map27.p.rapidapi.com',
+// },
+// });
+
+// return data;
+// }
+// } catch (error) {
+// console.log(error);
+// }
+// };
\ No newline at end of file
diff --git a/src/components/Header/Header.jsx b/src/components/Header/Header.jsx
new file mode 100644
index 0000000..d008a31
--- /dev/null
+++ b/src/components/Header/Header.jsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { Autocomplete } from '@react-google-maps/api';
+import { AppBar, Toolbar, Typography, InputBase, Box } from '@material-ui/core';
+import SearchIcon from '@material-ui/icons/Search';
+
+import useStyles from './styles.js';
+
+const Header = ({ onPlaceChanged, onLoad }) => {
+ const classes = useStyles();
+
+ return (
+
+
+
+
+
+
+
+ );
+};
+
+export default Header;
\ No newline at end of file
diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js
new file mode 100644
index 0000000..b25e363
--- /dev/null
+++ b/src/components/Header/styles.js
@@ -0,0 +1,32 @@
+import { alpha, makeStyles } from '@material-ui/core/styles';
+
+export default makeStyles((theme) => ({
+ title: {
+ display: 'none',
+ [theme.breakpoints.up('sm')]: {
+ display: 'block',
+ },
+ },
+ search: {
+ position: 'relative',
+ borderRadius: theme.shape.borderRadius,
+ backgroundColor: alpha(theme.palette.common.white, 0.15),
+ '&:hover': { backgroundColor: alpha(theme.palette.common.white, 0.25) },
+ marginRight: theme.spacing(2),
+ marginLeft: 0,
+ width: '100%',
+ [theme.breakpoints.up('sm')]: { marginLeft: theme.spacing(3), width: 'auto' },
+ },
+ searchIcon: {
+ padding: theme.spacing(0, 2), height: '100%', position: 'absolute', pointerEvents: 'none', display: 'flex', alignItems: 'center', justifyContent: 'center',
+ },
+ inputRoot: {
+ color: 'inherit',
+ },
+ inputInput: {
+ padding: theme.spacing(1, 1, 1, 0), paddingLeft: `calc(1em + ${theme.spacing(4)}px)`, transition: theme.transitions.create('width'), width: '100%', [theme.breakpoints.up('md')]: { width: '20ch' },
+ },
+ toolbar: {
+ display: 'flex', justifyContent: 'space-between',
+ },
+}));
\ No newline at end of file
diff --git a/src/components/List/List.jsx b/src/components/List/List.jsx
new file mode 100644
index 0000000..631e6fc
--- /dev/null
+++ b/src/components/List/List.jsx
@@ -0,0 +1,54 @@
+import React, { useState, useEffect, createRef } from 'react';
+import { CircularProgress, Grid, Typography, InputLabel, MenuItem, FormControl, Select } from '@material-ui/core';
+
+import PlaceDetails from '../PlaceDetail/PlaceDetails.js';
+import useStyles from './styles.js';
+
+const List = ({ places, type, setType, rating, setRating, childClicked, isLoading }) => {
+ const [elRefs, setElRefs] = useState([]);
+ const classes = useStyles();
+
+ useEffect(() => {
+ setElRefs((refs) => Array(places.length).fill().map((_, i) => refs[i] || createRef()));
+ }, [places]);
+
+ return (
+
+
주변 명소들을 추천해드릴게요 🤩
+ {isLoading ? (
+
+
+
+ ) : (
+ <>
+
+ Type
+
+
+
+ Rating
+
+
+
+ {places?.map((place, i) => (
+
+
+
+ ))}
+
+ >
+ )}
+
+ );
+};
+
+export default List;
\ No newline at end of file
diff --git a/src/components/List/styles.js b/src/components/List/styles.js
new file mode 100644
index 0000000..a9928aa
--- /dev/null
+++ b/src/components/List/styles.js
@@ -0,0 +1,22 @@
+import { makeStyles } from '@material-ui/core/styles';
+
+export default makeStyles((theme) => ({
+ formControl: {
+ margin: theme.spacing(1), minWidth: 120, marginBottom: '30px',
+ },
+ selectEmpty: {
+ marginTop: theme.spacing(2),
+ },
+ loading: {
+ height: '600px', display: 'flex', justifyContent: 'center', alignItems: 'center',
+ },
+ container: {
+ padding: '25px',
+ },
+ marginBottom: {
+ marginBottom: '30px',
+ },
+ list: {
+ height: '75vh', overflow: 'auto',
+ },
+}));
\ No newline at end of file
diff --git a/src/components/Map/Map.jsx b/src/components/Map/Map.jsx
new file mode 100644
index 0000000..3ad4252
--- /dev/null
+++ b/src/components/Map/Map.jsx
@@ -0,0 +1,60 @@
+import React from 'react';
+import GoogleMapReact from 'google-map-react';
+import { Paper, Typography, useMediaQuery } from '@material-ui/core';
+import LocationOnOutlinedIcon from '@material-ui/icons/LocationOnOutlined';
+import Rating from '@material-ui/lab/Rating';
+
+import mapStyles from './mapStyles.js';
+import useStyles from './styles.js';
+
+const Map = ({ coords, places, setCoords, setBounds, setChildClicked, weatherData }) => {
+ const matches = useMediaQuery('(min-width:600px)');
+ const classes = useStyles();
+
+ return (
+
+
{
+ setCoords({ lat: e.center.lat, lng: e.center.lng });
+ setBounds({ ne: e.marginBounds.ne, sw: e.marginBounds.sw });
+ }}
+ onChildClick={(child) => setChildClicked(child)}
+ >
+ {places.length && places.map((place, i) => (
+
+ {!matches
+ ?
+ : (
+
+ {place.name}
+
+
+
+ )}
+
+ ))}
+ {/* {weatherData?.list?.length && weatherData.list.map((data, i) => (
+
+
+
+ ))} */}
+
+
+ );
+};
+
+export default Map;
\ No newline at end of file
diff --git a/src/components/Map/mapStyles.js b/src/components/Map/mapStyles.js
new file mode 100644
index 0000000..512e048
--- /dev/null
+++ b/src/components/Map/mapStyles.js
@@ -0,0 +1,101 @@
+export default [
+ {
+ featureType: 'all',
+ elementType: 'all',
+ stylers: [
+ {
+ saturation: '32',
+ },
+ {
+ lightness: '-3',
+ },
+ {
+ visibility: 'on',
+ },
+ {
+ weight: '1.18',
+ },
+ ],
+ },
+ {
+ featureType: 'administrative',
+ elementType: 'labels',
+ stylers: [
+ {
+ visibility: 'on',
+ },
+ ],
+ },
+ {
+ featureType: 'landscape',
+ elementType: 'labels',
+ stylers: [
+ {
+ visibility: 'off',
+ },
+ ],
+ },
+ {
+ featureType: 'landscape.man_made',
+ elementType: 'all',
+ stylers: [
+ {
+ saturation: '-70',
+ },
+ {
+ lightness: '14',
+ },
+ ],
+ },
+ {
+ featureType: 'poi',
+ elementType: 'labels',
+ stylers: [
+ {
+ visibility: 'off',
+ },
+ ],
+ },
+ {
+ featureType: 'road',
+ elementType: 'labels',
+ stylers: [
+ {
+ visibility: 'off',
+ },
+ ],
+ },
+ {
+ featureType: 'transit',
+ elementType: 'labels',
+ stylers: [
+ {
+ visibility: 'off',
+ },
+ ],
+ },
+ {
+ featureType: 'water',
+ elementType: 'all',
+ stylers: [
+ {
+ saturation: '100',
+ },
+ {
+ lightness: '-14',
+ },
+ ],
+ },
+ {
+ featureType: 'water',
+ elementType: 'labels',
+ stylers: [
+ {
+ visibility: 'off',
+ },
+ {
+ lightness: '12',
+ },
+ ],
+ },
+ ];
\ No newline at end of file
diff --git a/src/components/Map/styles.js b/src/components/Map/styles.js
new file mode 100644
index 0000000..22078a3
--- /dev/null
+++ b/src/components/Map/styles.js
@@ -0,0 +1,16 @@
+import { makeStyles } from '@material-ui/core/styles';
+
+export default makeStyles(() => ({
+ paper: {
+ padding: '10px', display: 'flex', flexDirection: 'column', justifyContent: 'center', width: '100px',
+ },
+ mapContainer: {
+ height: '85vh', width: '100%',
+ },
+ markerContainer: {
+ position: 'absolute', transform: 'translate(-50%, -50%)', zIndex: 1, '&:hover': { zIndex: 2 },
+ },
+ pointer: {
+ cursor: 'pointer',
+ },
+}));
\ No newline at end of file
diff --git a/src/components/PlaceDetail/PlaceDetails.js b/src/components/PlaceDetail/PlaceDetails.js
new file mode 100644
index 0000000..cf391c7
--- /dev/null
+++ b/src/components/PlaceDetail/PlaceDetails.js
@@ -0,0 +1,70 @@
+import React from 'react';
+import { Box, Typography, Button, Card, CardMedia, CardContent, CardActions, Chip } from '@material-ui/core';
+import LocationOnIcon from '@material-ui/icons/LocationOn';
+import PhoneIcon from '@material-ui/icons/Phone';
+import Rating from '@material-ui/lab/Rating';
+
+import useStyles from '../List/styles.js';
+
+const PlaceDetails = ({ place, selected, refProp }) => {
+ if (selected) refProp?.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
+ const classes = useStyles();
+
+ return (
+
+
+
+ {place.name}
+
+
+ {place.num_reviews} review{place.num_reviews > 1 && 's'}
+
+
+ Price
+
+ {place.price_level}
+
+
+
+ Ranking
+
+ {place.ranking}
+
+
+ {place?.awards?.map((award) => (
+
+
+ {award.display_name}
+
+ ))}
+ {place?.cuisine?.map(({ name }) => (
+
+ ))}
+ {place.address && (
+
+ {place.address}
+
+ )}
+ {place.phone && (
+
+ {place.phone}
+
+ )}
+
+
+
+
+
+
+ );
+};
+
+export default PlaceDetails;
\ No newline at end of file
diff --git a/src/components/PlaceDetail/styles.js b/src/components/PlaceDetail/styles.js
new file mode 100644
index 0000000..99a4dc1
--- /dev/null
+++ b/src/components/PlaceDetail/styles.js
@@ -0,0 +1,13 @@
+import { makeStyles } from '@material-ui/core/styles';
+
+export default makeStyles(() => ({
+ chip: {
+ margin: '5px 5px 5px 0',
+ },
+ subtitle: {
+ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginTop: '10px',
+ },
+ spacing: {
+ display: 'flex', alignItems: 'center', justifyContent: 'space-between',
+ },
+}));
\ No newline at end of file
diff --git a/src/pages/BoardPages/HomePage.jsx b/src/pages/BoardPages/HomePage.jsx
index 1fb020c..aeaae56 100644
--- a/src/pages/BoardPages/HomePage.jsx
+++ b/src/pages/BoardPages/HomePage.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import styled from 'styled-components';
import TopBar from '../../components/TopBar';
import Banner from '../../components/Banner';
@@ -15,6 +15,14 @@ import bookmark from '../../images/bookmark.svg';
import comment from '../../images/comment.svg';
import { useNavigate } from 'react-router-dom';
import { GoogleMap, LoadScript, MarkerF } from '@react-google-maps/api';
+import GoogleMapReact from 'google-map-react';
+import {CssBaseline, Grid} from '@material-ui/core';
+import Map from '../../components/Map/Map';
+import List from '../../components/List/List';
+
+import { getPlacesData } from '../../api/travelAdvisorAPI';
+import Header from '../../components/Header/Header';
+import axios from 'axios';
const Body = styled.div`
margin-top: 10vh;
@@ -40,8 +48,8 @@ const ListContainer = styled.div`
margin-top: 20px;
margin-bottom: 60px;
`
-const List = styled.div`
- width: 45%;
+const HotList = styled.div`
+ width: 47%;
border-radius: 20px;
border: 1px solid #E9E9E9;
background: #F9F9F9;
@@ -110,31 +118,93 @@ const Bookmark = styled.div`
font-weight: 600;
margin-left: 5px;
`
+const MapDiv = styled.div`
+ width: '700px';
+ height: '700px';
+ border-radius: '20px';
+ margin-left: '60px';
+ margin-top: '10px';
+`
let list = [
{id: 1, title: '첫번째 글', detail: '첫번째 글 내용 어쩌구저쩌구 블라블라 샬라샬라', writer: '데미소다', label: label_blackhole, date: '2024/01/10 21:25', comment: 2, bookmark: 20},
{id: 2, title: '두번째 글', detail: '두번째 글 내용 어쩌구저쩌구 블라블라 샬라샬라', writer: '데미소다', label: label_comet, date: '2024/01/10 21:25', comment: 10, bookmark: 2},
];
-const containerStyle = {
- width: '700px',
- height: '700px',
- borderRadius: '20px',
- marginLeft: '60px',
- marginTop: '10px'
- };
-
- const center = {
- lat: 14.018000,
- lng: 120.835941
- };
-
const HomePage = () => {
const navigate = useNavigate();
const handleClickList = (e) => {
const listId = e.target.id;
navigate(`/detail/${listId}`);
}
+
+ // 연동코드
+ // const getHotList = () => {
+ // axios.get('http://127.0.0.1:8000/board/home')
+ // .then(res => {
+ // console.log(res);
+ // })
+ // .catch(err => {
+ // console.error('Error get hotlist: ', err)
+ // })
+ // }
+
+ // useEffect(() => {
+ // getHotList();
+ // }, []);
+
+ const [type, setType] = useState('restaurants');
+ const [rating, setRating] = useState('');
+
+ const [coords, setCoords] = useState({});
+ const [bounds, setBounds] = useState(null);
+
+ //const [weatherData, setWeatherData] = useState([]);
+ const [filteredPlaces, setFilteredPlaces] = useState([]);
+ const [places, setPlaces] = useState([]);
+
+ const [autocomplete, setAutocomplete] = useState(null);
+ const [childClicked, setChildClicked] = useState(null);
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ navigator.geolocation.getCurrentPosition(({ coords: { latitude, longitude } }) => {
+ setCoords({ lat: latitude, lng: longitude });
+ });
+ }, []);
+
+ useEffect(() => {
+ const filtered = places.filter((place) => Number(place.rating) > rating);
+
+ setFilteredPlaces(filtered);
+ }, [rating]);
+
+ useEffect(() => {
+ if (bounds) {
+ setIsLoading(true);
+
+ // getWeatherData(coords.lat, coords.lng)
+ // .then((data) => setWeatherData(data));
+
+ getPlacesData(type, bounds.sw, bounds.ne)
+ .then((data) => {
+ setPlaces(data.filter((place) => place.name && place.num_reviews > 0));
+ setFilteredPlaces([]);
+ setRating('');
+ setIsLoading(false);
+ });
+ }
+ }, [bounds, type]);
+
+ const onLoad = (autoC) => setAutocomplete(autoC);
+
+ const onPlaceChanged = () => {
+ const lat = autocomplete.getPlace().geometry.location.lat();
+ const lng = autocomplete.getPlace().geometry.location.lng();
+
+ setCoords({ lat, lng });
+ };
+
return (
<>
@@ -144,7 +214,7 @@ const HomePage = () => {
유용한 정보, 놓치지 마세요. 가장 핫한 글 🔥
{list && list.map(list => (
-
+
{list.title}
{list.detail}
@@ -158,11 +228,11 @@ const HomePage = () => {
{list.bookmark}
-
+
))}
내가 지금 떠나고 싶은 곳은?
-
{
>
<>>
-
+ */}
+
+
+
+
+
+
+
+
+
+
>
diff --git a/src/pages/SignupPage.jsx b/src/pages/SignupPage.jsx
index 6781761..89eb917 100644
--- a/src/pages/SignupPage.jsx
+++ b/src/pages/SignupPage.jsx
@@ -5,6 +5,7 @@ import airplane from '../images/signup_airplane.png';
import logo from '../images/signup_logo.svg';
import arrow from '../images/downarrow.svg';
import { useNavigate } from 'react-router-dom';
+import axios from 'axios';
const Wrapper = styled.div`
background: linear-gradient(#253149, #323691);
@@ -73,7 +74,7 @@ const FlexDiv = styled.div`
display: flex;
justify-content: space-between;
`
-const SexBtn = styled.div`
+const GenderBtn = styled.div`
border-radius: 15px;
background: rgba(242, 242, 242, 0.23);
color: #FFF;
@@ -188,7 +189,7 @@ const SignupPage = () => {
const [password2, setPassword2] = useState('');
const [pw2Message, setPw2Message] = useState('');
const [name, setName] = useState('');
- const [sex, setSex] = useState('');
+ const [gender, setGender] = useState('');
const [birth, setBirth] = useState('');
const [birthMessage, setBirthMessage] = useState('');
const [nickname, setNickname] = useState('');
@@ -203,7 +204,7 @@ const SignupPage = () => {
const [ispwform, setIspwform] = useState(false);
const [pwcheck, setPwcheck] = useState(false);
const [isname, setIsname] = useState(false);
- const [issex, setIssex] = useState(false);
+ const [isgender, setIsgender] = useState(false);
const [isbirth, setIsbirth] = useState(false);
const [isnickname, setIsnickname] = useState(false);
const [isintroduce, setIsintroduce] = useState(false);
@@ -268,9 +269,9 @@ const SignupPage = () => {
setName(e.target.value);
setIsname(true);
}
- const handleSex = (e) => {
- setSex(e.target.id);
- setIssex(true);
+ const handleGender = (e) => {
+ setGender(e.target.id);
+ setIsgender(true);
}
const onChangeBirth = (e) => {
const currentBirth = e.target.value;
@@ -325,13 +326,32 @@ const SignupPage = () => {
이메일: ${email}\n
비밀번호: ${password}\n
이름: ${name}\n
- 성별: ${sex}\n
+ 성별: ${gender}\n
생년월일: ${birth}\n
닉네임: ${nickname}\n
자기소개: ${introduce}\n
프로필사진: ${imgFile}\n
`
)
+ axios.post('http://127.0.0.1:8000/sign/signup', {
+ user_d: id,
+ email: email,
+ user_pw: password,
+ username: name,
+ gender: gender,
+ birth_date: birth,
+ nickname: nickname,
+ bio: introduce,
+ profile_pic: imgFile
+ })
+ .then(res => {
+ alert("회원가입이 완료되었습니다.");
+ navigate('/test');
+ console.log(res);
+ })
+ .catch(error => {
+ console.error('Error handle signup: ', error);
+ });
}
return (
@@ -394,8 +414,8 @@ const SignupPage = () => {
성별
- 남
- 여
+ 남
+ 여
diff --git a/yarn.lock b/yarn.lock
index b83080f..6e47dc4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1113,7 +1113,7 @@
resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.23.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.23.7"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz"
integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==
@@ -1270,6 +1270,11 @@
resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz"
integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==
+"@emotion/hash@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz"
+ integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
+
"@emotion/is-prop-valid@^0.8.2":
version "0.8.8"
resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz"
@@ -1331,7 +1336,7 @@
resolved "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz"
integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==
-"@googlemaps/js-api-loader@1.16.2":
+"@googlemaps/js-api-loader@^1.13.8", "@googlemaps/js-api-loader@1.16.2":
version "1.16.2"
resolved "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.2.tgz"
integrity sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==
@@ -1674,6 +1679,93 @@
resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
+"@mapbox/point-geometry@^0.1.0":
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz"
+ integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==
+
+"@material-ui/core@^4.0.0", "@material-ui/core@^4.12.1", "@material-ui/core@^4.12.4":
+ version "4.12.4"
+ resolved "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz"
+ integrity sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==
+ 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"
+
+"@material-ui/icons@^4.11.3":
+ 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"
+
+"@material-ui/lab@^4.0.0-alpha.61":
+ version "4.0.0-alpha.61"
+ resolved "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz"
+ integrity sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@material-ui/utils" "^4.11.3"
+ clsx "^1.0.4"
+ prop-types "^15.7.2"
+ react-is "^16.8.0 || ^17.0.0"
+
+"@material-ui/styles@^4.11.5":
+ 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==
+ 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"
+
+"@material-ui/system@^4.12.2":
+ version "4.12.2"
+ resolved "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz"
+ integrity sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@material-ui/utils" "^4.11.3"
+ csstype "^2.5.2"
+ prop-types "^15.7.2"
+
+"@material-ui/types@5.1.0":
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz"
+ integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==
+
+"@material-ui/utils@^4.11.3":
+ version "4.11.3"
+ resolved "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz"
+ integrity sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ prop-types "^15.7.2"
+ react-is "^16.8.0 || ^17.0.0"
+
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz"
@@ -2224,10 +2316,17 @@
dependencies:
"@types/react" "*"
-"@types/react@*":
- version "18.2.46"
- resolved "https://registry.npmjs.org/@types/react/-/react-18.2.46.tgz"
- integrity sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==
+"@types/react-transition-group@^4.2.0":
+ version "4.4.10"
+ resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz"
+ integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^16.8.6 || ^17.0.0":
+ version "17.0.75"
+ resolved "https://registry.npmjs.org/@types/react/-/react-17.0.75.tgz"
+ integrity sha512-MSA+NzEzXnQKrqpO63CYqNstFjsESgvJAdAyyJ1n6ZQq/GLgf6nOfIKwk+Twuz0L1N6xPe+qz5xRCJrbhMaLsw==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -2915,6 +3014,15 @@ axe-core@=4.7.0:
resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz"
integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==
+axios@^1.6.7:
+ version "1.6.7"
+ resolved "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz"
+ integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==
+ dependencies:
+ follow-redirects "^1.15.4"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
axobject-query@^3.2.1:
version "3.2.1"
resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz"
@@ -3351,6 +3459,11 @@ cliui@^7.0.2:
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
+clsx@^1.0.4:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
@@ -3677,6 +3790,14 @@ css-tree@1.0.0-alpha.37:
mdn-data "2.0.4"
source-map "^0.6.1"
+css-vendor@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz"
+ integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==
+ dependencies:
+ "@babel/runtime" "^7.8.3"
+ is-in-browser "^1.0.2"
+
css-what@^3.2.1:
version "3.4.2"
resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz"
@@ -3775,6 +3896,11 @@ cssstyle@^2.3.0:
dependencies:
cssom "~0.3.6"
+csstype@^2.5.2:
+ version "2.6.21"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz"
+ integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
+
csstype@^3.0.2:
version "3.1.3"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
@@ -4004,6 +4130,14 @@ dom-converter@^0.2.0:
dependencies:
utila "~0.4"
+dom-helpers@^5.0.1:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz"
+ integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
+ dependencies:
+ "@babel/runtime" "^7.8.7"
+ csstype "^3.0.2"
+
dom-serializer@^1.0.1:
version "1.4.1"
resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz"
@@ -4606,7 +4740,7 @@ etag@~1.8.1:
resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
-eventemitter3@^4.0.0:
+eventemitter3@^4.0.0, eventemitter3@^4.0.4:
version "4.0.7"
resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
@@ -4842,7 +4976,7 @@ flatted@^3.2.9:
resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz"
integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
-follow-redirects@^1.0.0:
+follow-redirects@^1.0.0, follow-redirects@^1.15.4:
version "1.15.4"
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz"
integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==
@@ -4890,6 +5024,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
forwarded@0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
@@ -5100,6 +5243,16 @@ globby@^11.0.4, globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
+google-map-react@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/google-map-react/-/google-map-react-2.2.1.tgz"
+ integrity sha512-Dg8aexf5rNSmywj0XKQ5m4RNzVcWwKEM2BGDj5aPChD0um8ZRjB5Upcb/yg/i0oG1aES29asQ5+6BHVgrK5xGA==
+ dependencies:
+ "@googlemaps/js-api-loader" "^1.13.8"
+ "@mapbox/point-geometry" "^0.1.0"
+ eventemitter3 "^4.0.4"
+ prop-types "^15.7.2"
+
gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz"
@@ -5185,6 +5338,13 @@ he@^1.2.0:
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+hoist-non-react-statics@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
hoopy@^0.1.4:
version "0.1.4"
resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz"
@@ -5291,7 +5451,7 @@ http-proxy-agent@^4.0.1:
agent-base "6"
debug "4"
-http-proxy-middleware@^2.0.3:
+http-proxy-middleware@^2.0.3, http-proxy-middleware@^2.0.6:
version "2.0.6"
resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz"
integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
@@ -5324,6 +5484,11 @@ human-signals@^2.1.0:
resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+hyphenate-style-name@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz"
+ integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
+
iconv-lite@^0.6.3:
version "0.6.3"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"
@@ -5551,6 +5716,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-in-browser@^1.0.2, is-in-browser@^1.1.3:
+ 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==
+
is-map@^2.0.1, is-map@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz"
@@ -6452,6 +6622,76 @@ jsonpointer@^5.0.0:
resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz"
integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
+jss-plugin-camel-case@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz"
+ integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ hyphenate-style-name "^1.0.3"
+ jss "10.10.0"
+
+jss-plugin-default-unit@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz"
+ integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.10.0"
+
+jss-plugin-global@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz"
+ integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.10.0"
+
+jss-plugin-nested@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz"
+ integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.10.0"
+ tiny-warning "^1.0.2"
+
+jss-plugin-props-sort@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz"
+ integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.10.0"
+
+jss-plugin-rule-value-function@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz"
+ integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ jss "10.10.0"
+ tiny-warning "^1.0.2"
+
+jss-plugin-vendor-prefixer@^10.5.1:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz"
+ integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ css-vendor "^2.0.8"
+ jss "10.10.0"
+
+jss@^10.5.1, jss@10.10.0:
+ version "10.10.0"
+ resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz"
+ integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ csstype "^3.0.2"
+ is-in-browser "^1.1.3"
+ tiny-warning "^1.0.2"
+
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5:
version "3.3.5"
resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz"
@@ -7266,6 +7506,11 @@ pkg-up@^3.1.0:
dependencies:
find-up "^3.0.0"
+popper.js@1.16.1-lts:
+ 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==
+
postcss-attribute-case-insensitive@^5.0.2:
version "5.0.2"
resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz"
@@ -7898,7 +8143,7 @@ prompts@^2.0.1, prompts@^2.4.2:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.8.1:
+prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -7915,6 +8160,11 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
psl@^1.1.33:
version "1.9.0"
resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz"
@@ -8018,7 +8268,7 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-"react-dom@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8 || ^17 || ^18", react-dom@^18.0.0, react-dom@^18.2.0, "react-dom@>= 16.8.0", react-dom@>=16.8:
+"react-dom@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8 || ^17 || ^18", "react-dom@^16.8.0 || ^17.0.0", react-dom@^18.0.0, react-dom@^18.2.0, "react-dom@>= 16.8.0", react-dom@>=16.6.0, react-dom@>=16.8:
version "18.2.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@@ -8036,6 +8286,16 @@ react-is@^16.13.1:
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+react-is@^16.7.0:
+ version "16.13.1"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+"react-is@^16.8.0 || ^17.0.0":
+ version "17.0.2"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
+ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+
react-is@^17.0.1:
version "17.0.2"
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
@@ -8132,7 +8392,17 @@ react-slick@^0.29.0:
lodash.debounce "^4.0.8"
resize-observer-polyfill "^1.5.0"
-"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17 || ^18", react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=16.8:
+react-transition-group@^4.4.0:
+ version "4.4.5"
+ resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz"
+ integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
+ prop-types "^15.6.2"
+
+"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17 || ^18", "react@^16.8.0 || ^17.0.0", react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=16.6.0, react@>=16.8:
version "18.2.0"
resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@@ -9264,6 +9534,11 @@ thunky@^1.0.2:
resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz"
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+tiny-warning@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
tmpl@1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz"