diff --git a/package-lock.json b/package-lock.json
index 7953984..1277f4c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,14 +8,26 @@
"name": "frontend",
"version": "0.1.0",
"dependencies": {
+ "@emotion/react": "^11.10.6",
+ "@emotion/styled": "^11.10.6",
+ "@mui/icons-material": "^5.13.7",
+ "@mui/material": "^5.11.16",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"axios": "^1.3.4",
+ "ci": "^2.2.0",
+ "crypto-js": "^4.1.1",
+ "date-fns": "^2.30.0",
"http-proxy-middleware": "^2.0.6",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-i18next": "^12.2.0",
+ "react-icons": "^4.10.1",
+ "react-responsive": "^9.0.2",
+ "react-router-dom": "^6.11.1",
"react-scripts": "5.0.1",
+ "styled-components": "^6.0.0-rc.1",
"web-vitals": "^2.1.4"
}
},
@@ -36,6 +48,78 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@babel/cli": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.21.5.tgz",
+ "integrity": "sha512-TOKytQ9uQW9c4np8F+P7ZfPINy5Kv+pizDIUwSVH8X5zHgYHV4AA8HE5LA450xXeu4jEfmUckTYvv1I4S26M/g==",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "commander": "^4.0.1",
+ "convert-source-map": "^1.1.0",
+ "fs-readdir-recursive": "^1.1.0",
+ "glob": "^7.2.0",
+ "make-dir": "^2.1.0",
+ "slash": "^2.0.0"
+ },
+ "bin": {
+ "babel": "bin/babel.js",
+ "babel-external-helpers": "bin/babel-external-helpers.js"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "optionalDependencies": {
+ "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
+ "chokidar": "^3.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
@@ -533,6 +617,20 @@
"@babel/core": "^7.13.0"
}
},
+ "node_modules/@babel/plugin-external-helpers": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.18.6.tgz",
+ "integrity": "sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-proposal-async-generator-functions": {
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
@@ -1801,9 +1899,9 @@
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
},
"node_modules/@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
+ "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==",
"dependencies": {
"regenerator-runtime": "^0.13.11"
},
@@ -2132,6 +2230,158 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.10.6",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz",
+ "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.0",
+ "@emotion/memoize": "^0.8.0",
+ "@emotion/serialize": "^1.1.1",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.1.3"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.10.7",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.7.tgz",
+ "integrity": "sha512-VLl1/2D6LOjH57Y8Vem1RoZ9haWF4jesHDGiHtKozDQuBIkJm2gimVo0I02sWCuzZtVACeixTVB4jeE8qvCBoQ==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.0",
+ "@emotion/sheet": "^1.2.1",
+ "@emotion/utils": "^1.2.0",
+ "@emotion/weak-memoize": "^0.3.0",
+ "stylis": "4.1.3"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
+ "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
+ "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
+ "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.10.6",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz",
+ "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.10.6",
+ "@emotion/cache": "^11.10.5",
+ "@emotion/serialize": "^1.1.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
+ "@emotion/utils": "^1.2.0",
+ "@emotion/weak-memoize": "^0.3.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz",
+ "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.0",
+ "@emotion/memoize": "^0.8.0",
+ "@emotion/unitless": "^0.8.0",
+ "@emotion/utils": "^1.2.0",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz",
+ "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.10.6",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.6.tgz",
+ "integrity": "sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.10.6",
+ "@emotion/is-prop-valid": "^1.2.0",
+ "@emotion/serialize": "^1.1.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
+ "@emotion/utils": "^1.2.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
+ "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
+ "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
+ "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
+ "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz",
@@ -3006,6 +3256,268 @@
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
+ "node_modules/@mui/base": {
+ "version": "5.0.0-alpha.124",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.124.tgz",
+ "integrity": "sha512-I6M+FrjRCybQCr8I8JTu6L2MkUobSQFgNIpOJyDNKL5zq/73LvZIQXvsKumAzthVGvI1PYaarM9vGDrDYbumKA==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "@emotion/is-prop-valid": "^1.2.0",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.13",
+ "@popperjs/core": "^2.11.7",
+ "clsx": "^1.2.1",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/base/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
+ "node_modules/@mui/core-downloads-tracker": {
+ "version": "5.11.16",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.16.tgz",
+ "integrity": "sha512-GxRfZ/HquQ/1nUc9qQVGReP6oOMS8/3QjPJ+23a7TMrxl2wjlmXrMNn7tRa30vZcGcDgEG+J0aseefUN0AoawQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ }
+ },
+ "node_modules/@mui/icons-material": {
+ "version": "5.13.7",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.13.7.tgz",
+ "integrity": "sha512-zoVtkb9jYVUGfI7CobOdDBEAlpg3XESiO6cWqSDGwEma69+CBDIAwGpnO5truvQDJHBGSAfzFj3nObwxjkyA7Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@mui/material": "^5.0.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material": {
+ "version": "5.11.16",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.16.tgz",
+ "integrity": "sha512-++glQqbZ3rMzOWB77yOvqRG+k8+scYTUKVWZpWff+GWsf6L10g9L2wgRhhAS8bDLuxCbXZlPNbSZowXDDw6z6Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "@mui/base": "5.0.0-alpha.124",
+ "@mui/core-downloads-tracker": "^5.11.16",
+ "@mui/system": "^5.11.16",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.13",
+ "@types/react-transition-group": "^4.4.5",
+ "clsx": "^1.2.1",
+ "csstype": "^3.1.2",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.2.0",
+ "react-transition-group": "^4.4.5"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
+ "node_modules/@mui/private-theming": {
+ "version": "5.11.13",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.13.tgz",
+ "integrity": "sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "@mui/utils": "^5.11.13",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/styled-engine": {
+ "version": "5.11.16",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.16.tgz",
+ "integrity": "sha512-8dJRR/LqtGGaZN21p1vU9euwrKERlgtQIWyuzBKZ8/cuSlW5rIzlp46liP+Uh0+7d9NcHU0H4hBMoPt3ax64PA==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "@emotion/cache": "^11.10.5",
+ "csstype": "^3.1.2",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.4.1",
+ "@emotion/styled": "^11.3.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/system": {
+ "version": "5.11.16",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.16.tgz",
+ "integrity": "sha512-JY7CNm7ik2Gr4kQpz1+C9N/f4ET3QjVBo/iaHcmlSOgjdxnOzFbv+vCdb1DMzBGew+UbqckppZpZwbgbrBE2Rw==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "@mui/private-theming": "^5.11.13",
+ "@mui/styled-engine": "^5.11.16",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.13",
+ "clsx": "^1.2.1",
+ "csstype": "^3.1.2",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/types": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz",
+ "integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==",
+ "peerDependencies": {
+ "@types/react": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/utils": {
+ "version": "5.11.13",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.13.tgz",
+ "integrity": "sha512-5ltA58MM9euOuUcnvwFJqpLdEugc9XFsRR8Gt4zZNb31XzMfSKJPR4eumulyhsOTK1rWf7K4D63NKFPfX0AxqA==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0",
+ "@types/prop-types": "^15.7.5",
+ "@types/react-is": "^16.7.1 || ^17.0.0",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@mui/utils/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
+ "node_modules/@nicolo-ribaudo/chokidar-2": {
+ "version": "2.1.8-no-fsevents.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
+ "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
+ "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",
@@ -3115,6 +3627,23 @@
}
}
},
+ "node_modules/@popperjs/core": {
+ "version": "2.11.7",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
+ "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.1.tgz",
+ "integrity": "sha512-YUkWj+xs0oOzBe74OgErsuR3wVn+efrFhXBWrit50kOiED+pvQe2r6MWY0iJMQU/mSVKxvNzL4ZaYvjdX+G7ZA==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/@rollup/plugin-babel": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
@@ -4200,6 +4729,22 @@
"@types/react": "*"
}
},
+ "node_modules/@types/react-is": {
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
+ "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@@ -5651,6 +6196,14 @@
"node": ">= 6"
}
},
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -5756,6 +6309,17 @@
"node": ">=6.0"
}
},
+ "node_modules/ci": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ci/-/ci-2.2.0.tgz",
+ "integrity": "sha512-lBkEN6XclyW0jnprtFQ+dsbP+9zwmo37Z1cV38h4FSDgI2QzFqwknJnVSvRxK9UXkPC4ZcVOVFyCVrNylTX52Q==",
+ "bin": {
+ "ci": "lib/ci.js"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/ci?sponsor=1"
+ }
+ },
"node_modules/ci-info": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
@@ -5804,6 +6368,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",
@@ -6057,6 +6629,11 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
+ },
"node_modules/crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -6082,6 +6659,14 @@
"postcss": "^8.4"
}
},
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/css-declaration-sorter": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
@@ -6135,6 +6720,11 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/css-mediaquery": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
+ "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q=="
+ },
"node_modules/css-minimizer-webpack-plugin": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz",
@@ -6263,6 +6853,16 @@
"resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
"integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
},
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"node_modules/css-tree": {
"version": "1.0.0-alpha.37",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
@@ -6450,9 +7050,9 @@
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
},
"node_modules/csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
@@ -6472,6 +7072,21 @@
"node": ">=10"
}
},
+ "node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
+ }
+ },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -6732,6 +7347,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",
@@ -8106,6 +8730,11 @@
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ },
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -8380,6 +9009,11 @@
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
"integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
},
+ "node_modules/fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
+ },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -8734,6 +9368,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",
@@ -8826,6 +9473,14 @@
"node": ">=12"
}
},
+ "node_modules/html-parse-stringify": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
+ "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
+ "dependencies": {
+ "void-elements": "3.1.0"
+ }
+ },
"node_modules/html-webpack-plugin": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
@@ -8960,6 +9615,34 @@
"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/i18next": {
+ "version": "22.4.14",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.14.tgz",
+ "integrity": "sha512-VtLPtbdwGn0+DAeE00YkiKKXadkwg+rBUV+0v8v0ikEjwdiJ0gmYChVE4GIa9HXymY6wKapkL93vGT7xpq6aTw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://locize.com"
+ },
+ {
+ "type": "individual",
+ "url": "https://locize.com/i18next.html"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.20.6"
+ }
+ },
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -11924,6 +12607,14 @@
"tmpl": "1.0.5"
}
},
+ "node_modules/matchmediaquery": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz",
+ "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==",
+ "dependencies": {
+ "css-mediaquery": "^0.1.2"
+ }
+ },
"node_modules/mdn-data": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
@@ -14367,6 +15058,35 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
},
+ "node_modules/react-i18next": {
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.2.0.tgz",
+ "integrity": "sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.20.6",
+ "html-parse-stringify": "^3.0.1"
+ },
+ "peerDependencies": {
+ "i18next": ">= 19.0.0",
+ "react": ">= 16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-icons": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz",
+ "integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -14380,6 +15100,53 @@
"node": ">=0.10.0"
}
},
+ "node_modules/react-responsive": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz",
+ "integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==",
+ "dependencies": {
+ "hyphenate-style-name": "^1.0.0",
+ "matchmediaquery": "^0.3.0",
+ "prop-types": "^15.6.1",
+ "shallow-equal": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/react-router": {
+ "version": "6.11.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.1.tgz",
+ "integrity": "sha512-OZINSdjJ2WgvAi7hgNLazrEV8SGn6xrKA+MkJe9wVDMZ3zQ6fdJocUjpCUCI0cNrelWjcvon0S/QK/j0NzL3KA==",
+ "dependencies": {
+ "@remix-run/router": "1.6.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "6.11.1",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.1.tgz",
+ "integrity": "sha512-dPC2MhoPeTQ1YUOt5uIK376SMNWbwUxYRWk2ZmTT4fZfwlOvabF8uduRKKJIyfkCZvMgiF0GSCQckmkGGijIrg==",
+ "dependencies": {
+ "@remix-run/router": "1.6.1",
+ "react-router": "6.11.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
"node_modules/react-scripts": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
@@ -14452,6 +15219,21 @@
}
}
},
+ "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",
@@ -15158,6 +15940,16 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "node_modules/shallow-equal": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
+ "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -15560,6 +16352,50 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/styled-components": {
+ "version": "6.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.0.0-rc.1.tgz",
+ "integrity": "sha512-v+VqSeqCQboUqSxTxIW/wmBYB0BGDBV30tTMWcUaicapSy0VYNmZanOcFCxyfbViY/Bk2h+VKURMytx2jaTrwA==",
+ "dependencies": {
+ "@babel/cli": "^7.21.0",
+ "@babel/core": "^7.21.0",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/plugin-external-helpers": "^7.18.6",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
+ "@babel/preset-env": "^7.20.2",
+ "@babel/preset-react": "^7.18.6",
+ "@babel/preset-typescript": "^7.21.0",
+ "@babel/traverse": "^7.21.2",
+ "@emotion/unitless": "^0.8.0",
+ "css-to-react-native": "^3.2.0",
+ "shallowequal": "^1.1.0",
+ "stylis": "^4.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "babel-plugin-styled-components": ">= 2",
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-styled-components": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/styled-components/node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
"node_modules/stylehacks": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
@@ -15575,6 +16411,11 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/stylis": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
+ "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -16299,6 +17140,14 @@
"node": ">= 0.8"
}
},
+ "node_modules/void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/w3c-hr-time": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
diff --git a/package.json b/package.json
index 0c65e8b..0d1312c 100644
--- a/package.json
+++ b/package.json
@@ -3,21 +3,34 @@
"version": "0.1.0",
"private": true,
"dependencies": {
+ "@emotion/react": "^11.10.6",
+ "@emotion/styled": "^11.10.6",
+ "@mui/icons-material": "^5.13.7",
+ "@mui/material": "^5.11.16",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"axios": "^1.3.4",
+ "ci": "^2.2.0",
+ "crypto-js": "^4.1.1",
+ "date-fns": "^2.30.0",
"http-proxy-middleware": "^2.0.6",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-i18next": "^12.2.0",
+ "react-icons": "^4.10.1",
+ "react-responsive": "^9.0.2",
+ "react-router-dom": "^6.11.1",
"react-scripts": "5.0.1",
+ "styled-components": "^6.0.0-rc.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
- "eject": "react-scripts eject"
+ "eject": "react-scripts eject",
+ "deploy": "aws s3 sync ./build s3://suitcarrier-front --profile=INSIGHT_FRONT_S3+CF"
},
"eslintConfig": {
"extends": [
diff --git a/public/Image/ad.png b/public/Image/ad.png
new file mode 100644
index 0000000..d1d21e5
Binary files /dev/null and b/public/Image/ad.png differ
diff --git a/public/Image/alarm.png b/public/Image/alarm.png
new file mode 100644
index 0000000..e8160dd
Binary files /dev/null and b/public/Image/alarm.png differ
diff --git a/public/Image/bell.png b/public/Image/bell.png
new file mode 100644
index 0000000..724fedf
Binary files /dev/null and b/public/Image/bell.png differ
diff --git a/public/Image/c_logo.png b/public/Image/c_logo.png
new file mode 100644
index 0000000..f35d59b
Binary files /dev/null and b/public/Image/c_logo.png differ
diff --git a/public/Image/calculator.png b/public/Image/calculator.png
new file mode 100644
index 0000000..ccea102
Binary files /dev/null and b/public/Image/calculator.png differ
diff --git a/public/Image/card.png b/public/Image/card.png
new file mode 100644
index 0000000..39d2ce2
Binary files /dev/null and b/public/Image/card.png differ
diff --git a/public/Image/carrier.png b/public/Image/carrier.png
new file mode 100644
index 0000000..58d3663
Binary files /dev/null and b/public/Image/carrier.png differ
diff --git a/public/Image/circle.png b/public/Image/circle.png
new file mode 100644
index 0000000..d1360ce
Binary files /dev/null and b/public/Image/circle.png differ
diff --git a/public/Image/email.png b/public/Image/email.png
new file mode 100644
index 0000000..fb7e6ee
Binary files /dev/null and b/public/Image/email.png differ
diff --git a/public/Image/example.png b/public/Image/example.png
new file mode 100644
index 0000000..8220876
Binary files /dev/null and b/public/Image/example.png differ
diff --git a/public/Image/gift.png b/public/Image/gift.png
new file mode 100644
index 0000000..24cb58a
Binary files /dev/null and b/public/Image/gift.png differ
diff --git a/public/Image/logo.png b/public/Image/logo.png
new file mode 100644
index 0000000..465901e
Binary files /dev/null and b/public/Image/logo.png differ
diff --git a/public/Image/phone.png b/public/Image/phone.png
new file mode 100644
index 0000000..40f78d9
Binary files /dev/null and b/public/Image/phone.png differ
diff --git a/public/Image/place.png b/public/Image/place.png
new file mode 100644
index 0000000..a8649d7
Binary files /dev/null and b/public/Image/place.png differ
diff --git a/public/Image/suit-carrier.png b/public/Image/suit-carrier.png
new file mode 100644
index 0000000..957a0eb
Binary files /dev/null and b/public/Image/suit-carrier.png differ
diff --git a/public/Image/user.png b/public/Image/user.png
new file mode 100644
index 0000000..4e94da2
Binary files /dev/null and b/public/Image/user.png differ
diff --git a/src/App.js b/src/App.js
index cddc757..7bb592a 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,21 +1,53 @@
-import './App.css';
-import React, {useEffect, useState} from 'react';
-import axios from 'axios';
+import "./App.css";
+import React, { useEffect, useState } from "react";
+import { BrowserRouter, Routes, Route } from "react-router-dom";
+import axios from "axios";
+import SelfAuth from "./Page/SignUp/SelfAuth";
+import InputInfo from "./Page/SignUp/InputInfo";
+import MemberAgree from "./Page/SignUp/MemberAgree";
+import MemberSuccess from "./Page/SignUp/MemberSuccess";
+
+import LoginPage from "./Page/LoginPage";
+import KakaoLogin from "./Page/KaKaoLogin";
+import Auth from "./Page/Auth";
+import Profile from "./Page/Profile";
+import FindPw from "./Page/FindPw";
+import MainPage from "./Page/MainPage";
+import Sign from "./Page/Sign";
+import PhoneAuth from "./Page/SignUp/PhoneAuth";
function App() {
- const [hello, setHello] = useState('')
+ const [hello, setHello] = useState("");
+
+ // useEffect(() => {
+ // axios.get('http://localhost:8080/api/hello')
+ // .then(response => setHello(response.data))
+ // .catch(error => console.log(error))
+ // }, []);
- useEffect(() => {
- axios.get('http://localhost:8080/api/hello')
- .then(response => setHello(response.data))
- .catch(error => console.log(error))
- }, []);
+ return (
+
+
+
+ }>
+ }>
+ }>
+ }>
+ }>
- return (
-
- 백엔드에서 가져온 데이터입니다: {hello}
-
- );
+ {/* }>
+ }>
+ }> */}
+ }>
+ }>
+ }>
+ }>
+ }>
+ }>
+
+
+
+ );
}
export default App;
diff --git a/src/Components/bottom.js b/src/Components/bottom.js
new file mode 100644
index 0000000..8b2d9fb
--- /dev/null
+++ b/src/Components/bottom.js
@@ -0,0 +1,162 @@
+import styled from "styled-components";
+const Bottom1 = styled.div`
+ background-color: #007b59;
+ height: 700px;
+`;
+const SubTitle = styled.h2`
+ font-size: ${(props) => props.fontSize};
+ font-weight: ${(props) => props.fontWeight};
+ text-align: left;
+ color: white;
+`;
+const Div3 = styled.div`
+ padding: 144px;
+ padding-left: 50px;
+ display: flex;
+ justify-content: space-between;
+`;
+const Dis = styled.div`
+ padding-right: 80px;
+ font-weight: bold;
+ font-size: 60px;
+ color: white;
+ width: 582px;
+ align-items: end;
+ display: flex;
+ flex-direction: row;
+`;
+const IMG = styled.img`
+ width: 362px;
+ height: 362px;
+`;
+const LookBtn = styled.button`
+ font-size: 24px;
+ width: 198px;
+ height: 68px;
+ border: 1px solid white;
+ border-radius: 50px;
+ background-color: #007b59;
+ color: white;
+`;
+const Bottom2 = styled.div`
+ display: flex;
+ background-color: #eae9e4;
+ height: 380px;
+ width: 1920px;
+ padding-left: 42px;
+`;
+const Div4 = styled.div`
+ display: flex;
+ flex-direction: column;
+ text-align: left;
+ font-size: 24px;
+ font-weight: bold;
+ width: 80%;
+ white-space: nowrap;
+ overflow: visible;
+ text-overflow: ellipsis;
+`;
+const Div5 = styled.div`
+ margin-left: 10px;
+ margin-right: 86px;
+`;
+const Div6 = styled.div`
+ font-size: 28px;
+ align-items: end;
+ justify-content: end;
+ margin-right: 68px;
+ margin-bottom: 75px;
+ width: 40%;
+ display: flex;
+ text-align: right;
+ white-space: nowrap;
+ overflow: visible;
+ text-overflow: ellipsis;
+ & > img {
+ width: 204px;
+ height: 204px;
+ }
+`;
+const Bottom = () => {
+ return (
+
+
+
+
+
+
+ SUIT CARRIER에 대해 더 알고 싶다면?
+
+
+ 우리 집 창고 속 캐리어를, 우리 동네 캐리어로 !
+
+
+ 공간 차지가 큰 캐리어를 SUIT CARRIER를 활용해보세요.
+
+
+ 요즘 인기있는 캐리어 디자인, 사이즈를 확인해보세요
+
+
+ 케리어 둘러보기
+ CONTACT_US
+
+
+
+
+
+ SUIT-
+
+ CARRIER
+
+
+
+
+
+
+
+ Contact Us
+ gogoogle13@gmail.com
+
+ Tel |
+
+ 010-1234-5678
+
+ 02-1234-5678
+
+
+
+
+ Lns |
@suit_carrier0703
+
+
+ 서울시 관악구 봉천동 100-3 (캐리어 빌딩)
+
+ E-mail | suitcarrier_@naver.com
+
+
+
+
SUIT-CARRIER
+ 우리 집 창고 속 캐리어를, 우리 동네 캐리어로 !
+
+
+
+
+
+ );
+};
+export default Bottom;
diff --git a/src/Components/cards.js b/src/Components/cards.js
new file mode 100644
index 0000000..6c5e20d
--- /dev/null
+++ b/src/Components/cards.js
@@ -0,0 +1,63 @@
+import {
+ Card,
+ CardActions,
+ CardMedia,
+ IconButton,
+ Typography,
+ } from "@mui/material";
+ import Favorite from "@mui/icons-material/Favorite";
+
+ const Cards = () => {
+ return (
+
+
+
+
+ 성남시 분당구
+
+
+ 추천
+
+ HOT
+
+
+
+
+
+
+
+
+
3월 27일 ~ 4월 1일
+ 35,000 원 / 박
+
+
+
+ );
+ };
+ export default Cards;
+
\ No newline at end of file
diff --git a/src/Components/head.js b/src/Components/head.js
new file mode 100644
index 0000000..0f049cb
--- /dev/null
+++ b/src/Components/head.js
@@ -0,0 +1,81 @@
+import styled from "styled-components";
+import { useNavigate } from "react-router-dom";
+const Heads = styled.div`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: white;
+ width: 100vw;
+ height: 70px;
+`;
+const Center = styled.div`
+ width: 1280px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+`;
+const Title = styled.div`
+ width: 750px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 18px;
+ font-weight: bold;
+`;
+const Logo = styled.button`
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 220px;
+ border: none;
+ background-color: white;
+`;
+const User = styled.div`
+ display: flex;
+ justify-content: space-between;
+ width: 250px;
+ align-items: center;
+ & > button {
+ width: 138px;
+ height: 37px;
+ border-radius: 15px;
+ background-color: #007b59;
+ color: white;
+ border: none;
+ }
+ & > div > img {
+ margin-left: 10px;
+ }
+`;
+const Head = () => {
+ const navigate = useNavigate();
+ return (
+
+
+
+
+ navigate("/")}>
+
+
+
+ 인기매물 확인
+ 매물 등록하기
+ CONTACT_US
+
+
+
+
+

+

+
+
+
+
+
+ );
+};
+export default Head;
diff --git a/src/Page/Auth.js b/src/Page/Auth.js
new file mode 100644
index 0000000..6c771ea
--- /dev/null
+++ b/src/Page/Auth.js
@@ -0,0 +1,41 @@
+import { useEffect } from "react";
+import axios from "axios";
+import qs from "qs";
+import { useNavigate } from "react-router-dom";
+const Auth = () => {
+ const REST_API_KEY = process.env.REST_API_KEY;
+ const REDIRECT_URI = "http://localhost:3000/oauth/kakao/callback";
+ const CLIENT_SECRET = process.env.CLIENT_SECRET;
+
+ const code = new URL(window.location.href).searchParams.get("code");
+ const navigate = useNavigate();
+ const getToken = async () => {
+ const payload = qs.stringify({
+ grant_type: "authorization_code",
+ client_id: REST_API_KEY,
+ redirect_uri: REDIRECT_URI,
+ code: code,
+ client_secret: CLIENT_SECRET,
+ });
+ try {
+ // access token 가져오기
+ const res = await axios.post(
+ "https://kauth.kakao.com/oauth/token",
+ payload
+ );
+
+ // Kakao Javascript SDK 초기화
+ window.Kakao.init(REST_API_KEY);
+ // access token 설정
+ window.Kakao.Auth.setAccessToken(res.data.access_token);
+ navigate("/profile");
+ } catch (err) {
+ console.log(err);
+ }
+ };
+ useEffect(() => {
+ getToken();
+ }, []);
+ return null;
+};
+export default Auth;
diff --git a/src/Page/FindPw.js b/src/Page/FindPw.js
new file mode 100644
index 0000000..719a81a
--- /dev/null
+++ b/src/Page/FindPw.js
@@ -0,0 +1,133 @@
+import styled from "styled-components";
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ margin-top: 41px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+const Title1 = styled.div`
+ font-size: 32px;
+ font-weight: bold;
+`;
+const Title2 = styled.div`
+ font-size: 15px;
+ width: 100%;
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ & > div {
+ display: flex;
+ align-items: center;
+
+ height: 68px;
+ }
+ & > button {
+ background-color: white;
+ border: none;
+ }
+`;
+const Box = styled.div`
+ display: flex;
+ justify-content: center;
+ margin-top: 14px;
+ width: 653px;
+ height: 530px;
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ & > input {
+ display: flex;
+ width: 510px;
+ height: 45px;
+ border-radius: 15px;
+ border: 1px solid #c5c5c5;
+ font-size: 20px;
+ padding-left: 20px;
+ }
+`;
+const Name = styled.div`
+ color: #4f4747;
+ width: 100%;
+ display: flex;
+ margin-top: 49px;
+ margin-left: 15px;
+ font-size: 24px;
+ height: 68px;
+ font-weight: bold;
+ align-items: center;
+`;
+const Div1 = styled.div`
+ margin-top: 50px;
+ margin-bottom: 86px;
+ width: 510px;
+ display: flex;
+ justify-content: space-between;
+`;
+const Div2 = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ width: 242px;
+ height: 243px;
+
+ & > button {
+ height: 46px;
+ width: 242px;
+ border: none;
+ background-color: #007b59;
+ color: white;
+ border-radius: 30px;
+ }
+
+ & > img {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 195px;
+ height: 178px;
+ }
+`;
+
+const FindPw = () => {
+ return (
+
+
+ 비밀번호 찾기
+
+ 비밀번호가 기억나지 않으세요? 원하시는 방법을 선택해주세요
+
+
+
+
+ 새 비밀번호 설정
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default FindPw;
diff --git a/src/Page/KaKaoLogin.js b/src/Page/KaKaoLogin.js
new file mode 100644
index 0000000..6d781e2
--- /dev/null
+++ b/src/Page/KaKaoLogin.js
@@ -0,0 +1,5 @@
+const KakaoLogin = () => {
+ return dd
;
+ };
+ export default KakaoLogin;
+
\ No newline at end of file
diff --git a/src/Page/LoginPage.js b/src/Page/LoginPage.js
new file mode 100644
index 0000000..2120bc8
--- /dev/null
+++ b/src/Page/LoginPage.js
@@ -0,0 +1,282 @@
+import styled from "styled-components";
+import Auth from "./Auth";
+import { useNavigate } from "react-router-dom";
+const Div = styled.div`
+ display: flex;
+ flex-direction: column;
+`;
+const StyledHead = styled.div`
+ width: 100%;
+ height: 80px;
+ border-width: 1px 0px;
+ border-style: solid;
+ border-color: #353535;
+ color: red;
+ display: flex;
+ justify-content: center;
+`;
+const Div1 = styled.div`
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 1267px;
+ height: 59px;
+ margin-top: 9px;
+`;
+const MainButton = styled.button`
+ font-size: 24px;
+ background-color: white;
+ border: none;
+ font-weight: bold;
+`;
+const SubButton1 = styled.button`
+ font-size: 18px;
+ background-color: white;
+ border: none;
+`;
+const SignUpBtn = styled.button`
+ width: 106px;
+ height: 59px;
+ background-color: black;
+ color: white;
+ border-radius: 5px;
+`;
+const Main = styled.div`
+ display: flex;
+ background-color: #eae9e4;
+ justify-content: center;
+ /* height: 100vh; */
+ /* align-items: center; */
+`;
+const Box = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 1054px;
+ width: 571px;
+ background-color: white;
+ margin-top: 99px;
+
+ padding: 25px;
+ & > .h3 {
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 10px;
+ }
+ & > .Input {
+ font-size: 20px;
+ width: 509px;
+ height: 67px;
+ margin-bottom: 17px;
+ border: 1px solid #747474;
+ }
+ & > .div {
+ display: flex;
+ flex-direction: row;
+ }
+`;
+const LoginBtn = styled.button`
+ height: 67px;
+ width: 509px;
+ background-color: #007b59;
+ border: none;
+ color: white;
+ font-size: 22px;
+`;
+const Div2 = styled.div`
+ display: flex;
+ flex-direction: column;
+ width: 509px;
+
+ padding-top: 27px;
+ font-size: 15px;
+ & > div {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+`;
+const FindBtn = styled.button`
+ background-color: white;
+ border: none;
+`;
+const ProductBtn = styled.button`
+ display: flex;
+ margin-top: 36px;
+ margin-bottom: 4px;
+ border-radius: 50%;
+ width: 59px;
+ height: 59px;
+`;
+const KakaBtn = styled.button`
+ width: 509px;
+ height: 67px;
+ background-color: #f6e24b;
+ margin-top: 6px;
+ font-size: 22px;
+ color: #4f4747;
+ border: none;
+`;
+const SignBtn = styled.button`
+ width: 509px;
+ height: 67px;
+ margin-top: 15px;
+ font-size: 20px;
+ color: #686868;
+ border: 1px solid #a8a8a8;
+ background-color: white;
+`;
+const AdverBtn = styled.button`
+ margin-top: 63px;
+ width: 506px;
+ height: 243px;
+`;
+const Bottom1 = styled.footer`
+ background-color: #007b59;
+ height: 514px;
+`;
+const SubTitle = styled.h2`
+ font-size: ${(props) => props.fontSize};
+ font-weight: ${(props) => props.fontWeight};
+ color: white;
+`;
+const Div3 = styled.div`
+ margin-top: 102px;
+ margin-left: 50px;
+ display: flex;
+ justify-content: space-between;
+`;
+const IMG = styled.div`
+ width: 362px;
+ height: 362px;
+ border: 1px solid black;
+ margin-right: 141px;
+`;
+const LookBtn = styled.button`
+ font-size: 20px;
+ width: 187px;
+ height: 64px;
+ border: 1px solid white;
+ border-radius: 50px;
+ background-color: #007b59;
+ color: white;
+`;
+const Bottom2 = styled.footer`
+ background-color: #eae9e4;
+ height: 186px;
+ padding-left: 42px;
+`;
+const Div4 = styled.div`
+ width: ${(props) => props.width};
+ display: flex;
+ justify-content: space-between;
+`;
+const H3 = styled.h3`
+ font-size: 24px;
+ font-weight: ${(props) => props.fontWeight};
+`;
+const H4 = styled.h4`
+ font-size: 20px;
+ margin-top: 0px;
+`;
+const LoginPage = () => {
+ const REST_API_KEY = "089967149185843522d3d4b4ae9a3b3d";
+ const REDIRECT_URI = "http://localhost:3000/oauth/kakao/callback";
+ const KAKAO_AUTH_URL = `https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`;
+
+ const navigate = useNavigate();
+
+ return (
+
+
+
+
+ SUIT-CARRIER
+ SUIT-CARRIER
+ SUIT-CARRIER
+
+ navigate("/sign")}>Sign Up
+
+
+
+
+ 로그인
+
+
+ 로그인
+
+
+
+
+
+ 아이디 저장
+
+
+ 이메일 찾기|
+ navigate("/findPw")}>
+ 비밀번호 찾기
+
+
+
+
+
+ 카카오로 회원가입
+
+ navigate("/sign")}>회원가입
+
+ 광고자리
+
+
+
+
+
+
+
+
+
+ SUIT CARRIER에 대해 더 알고 싶다면?
+
+
+ 요즘 인기있는 캐리어 디자인, 사이즈를 확인해보세요
+
+
+ 요즘 인기있는 캐리어 디자인, 사이즈를 확인해보세요
+
+ 케리어 둘러보기
+
+
이미지넣기
+
+
+
+
+
+ Contact Us
+ gogoogle13@gamil.com
+ 서울시 관악구 봉천동 100-3 (캐리어빌딩)
+
+
+ Tel | 010-1234-5678
+ Tel | 010-1234-5678
+
+ E-mail | suitcarrier_@naver.com
+
+
+ );
+};
+export default LoginPage;
diff --git a/src/Page/MP.js b/src/Page/MP.js
new file mode 100644
index 0000000..0b21d2c
--- /dev/null
+++ b/src/Page/MP.js
@@ -0,0 +1,175 @@
+import { useState } from "react";
+// import ReactDatePicker from "react-datepicker";
+import styled from "styled-components";
+// import "react-datepicker/dist/react-datepicker.css";
+const Div = styled.div`
+ object-fit: cover;
+ width: 1920px;
+ height: 1080px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+`;
+const Head = styled.div`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: white;
+ width: 100vw;
+ height: 70px;
+`;
+const Center = styled.div`
+ width: 1280px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+`;
+const Title = styled.div`
+ width: 800px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 18px;
+ font-weight: bold;
+`;
+const Logo = styled.div`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+`;
+const User = styled.div`
+ display: flex;
+ justify-content: space-between;
+ width: 250px;
+ align-items: center;
+ & > button {
+ width: 138px;
+ height: 37px;
+ border-radius: 15px;
+ background-color: #007b59;
+ color: white;
+ border: none;
+ }
+ & > div > img {
+ margin-left: 10px;
+ }
+`;
+const Main1 = styled.div`
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ /* justify-content: space-between; */
+ background-image: url(${"/Image/carrier.png"});
+ background-repeat: no-repeat;
+ background-size: cover; /* 이미지를 화면에 꽉 채우도록 설정할 수 있습니다. */
+`;
+const Name = styled.div`
+ display: flex;
+ flex-direction: column;
+ & > h1 {
+ margin-bottom: 20px;
+ font-size: 96px;
+ }
+ & > h4 {
+ font-size: 28px;
+ margin: 0px;
+ color: #494949;
+ }
+`;
+const Bottom = styled.footer`
+ height: 500px;
+ background-color: #f6f6f6;
+ width: 1600px;
+ border-radius: 20px 20px 0px 0px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+const Cen = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 1000px;
+
+ align-items: stretch;
+`;
+const Row1 = styled.div`
+ display: flex;
+ justify-content: space-between;
+`;
+const MainPage = () => {
+ const [startDate, setStartDate] = useState(new Date());
+ const [endDate, setEndDate] = useState(new Date());
+ return (
+
+
+
+
+
+
+
+
+ 인기매물 확인
+ 매물 등록하기
+ CONTACT_US
+
+
+
+
+

+

+
+
+
+
+
+
+ Suit-carrier
+
+ 사기는 아깝지만 여행에 꼭 필요한 캐리어, 이제는 대여로 해결하세요
+
+
+
+
+
+
+
+

+
동네 선택
+
+
+
+
+
대여 기간
+
+ {/* setStartDate(date)}
+ selectsStart
+ startDate={startDate}
+ endDate={endDate}
+ />
+ setEndDate(date)}
+ selectsEnd
+ startDate={startDate}
+ endDate={endDate}
+ minDate={startDate}
+ /> */}
+
+
+
+
+
+
+
+
+ );
+};
+export default MainPage;
diff --git a/src/Page/MainPage.js b/src/Page/MainPage.js
new file mode 100644
index 0000000..9c4b293
--- /dev/null
+++ b/src/Page/MainPage.js
@@ -0,0 +1,457 @@
+import styled from "styled-components";
+import { AiOutlineRight } from "react-icons/ai";
+import { useNavigate } from "react-router-dom";
+import Bottom from "../Components/bottom";
+import Cards from "../Components/cards";
+
+// import DatePicker from "react-datepicker";
+import { ko } from "date-fns/esm/locale";
+// import "react-datepicker/dist/react-datepicker.css";
+import { useState } from "react";
+import Head from "../Components/head";
+
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ height: 4320px;
+`;
+const Main1 = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ background-image: url(/Image/carrier.png);
+ background-repeat: no-repeat;
+ background-position: top center;
+ background-size: cover;
+ width: 1920px;
+ height: 1080px;
+`;
+
+const Name = styled.div`
+ display: flex;
+ flex-direction: column;
+ & > h1 {
+ margin-bottom: 20px;
+ font-size: 96px;
+ }
+ & > h4 {
+ font-size: 28px;
+ margin: 0px;
+ color: #494949;
+ }
+`;
+const Box = styled.div`
+ font-weight: bold;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 1585px;
+ height: 654px;
+ background-color: rgba(222, 222, 222, 0.71);
+ margin-top: 110px;
+ & > button {
+ width: 246px;
+ height: 68px;
+ border-radius: 30px;
+ background-color: #007b59;
+ color: white;
+ border: none;
+ font-size: 18px;
+ margin-top: 77px;
+ margin-left: 1200px;
+ }
+`;
+const Div3 = styled.div`
+ width: 1000px;
+ margin-top: 70px;
+ display: flex;
+ justify-content: space-between;
+`;
+const Div4 = styled.div`
+ text-align: left;
+ font-size: 24px;
+ margin-left: 5px;
+`;
+// const DatePickerWrapper = styled(DatePicker)`
+// width: 315px;
+// height: 38px;
+// background-color: rgba(222, 222, 222, 0.71);
+// border: 1px solid #000000;
+// font-weight: bold;
+// font-size: 16px;
+// border-radius: 30px;
+// margin-top: 5px;
+// `;
+const Div5 = styled.div`
+ display: flex;
+ font-size: 24px;
+ font-weight: bold;
+ width: 1100px;
+ justify-content: space-between;
+ margin-top: 112px;
+`;
+const Select = styled.select`
+ background-color: rgba(222, 222, 222, 0.71);
+ width: 315px;
+ height: 38px;
+ border: 1px solid #000000;
+ margin-top: 5px;
+ border-radius: 30px;
+ font-weight: bold;
+ font-size: 16px;
+`;
+const Select2 = styled.select`
+ height: 33px;
+ background-color: rgba(222, 222, 222, 0.71);
+ border: none;
+ border-bottom: 1px solid black;
+ font-size: 24px;
+ font-weight: bold;
+ width: 150%;
+ margin-top: 30px;
+`;
+const Main2 = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 1920px;
+ height: 1080px;
+ background-color: white;
+`;
+const Ti = styled.div`
+ display: flex;
+ align-items: center;
+`;
+const Div1 = styled.div`
+ height: 48px;
+ width: 180px;
+ justify-content: space-between;
+ display: flex;
+ margin-right: 36px;
+ align-items: center;
+ font-size: 24px;
+`;
+const Div2 = styled.div`
+ height: 88px;
+ display: flex;
+ align-items: center;
+ text-align: left;
+ font-size: 20px;
+`;
+const Bell = styled.div`
+ display: flex;
+ margin-top: 124px;
+`;
+const Dis = styled.div`
+ margin-top: 150px;
+ display: flex;
+ justify-content: space-between;
+ width: 1500px;
+`;
+const Con = styled.div`
+ & > div {
+ position: relative;
+ background-image: url(/Image/circle.png);
+ background-repeat: no-repeat;
+ background-position: top center;
+ background-size: cover;
+ width: 249px;
+ height: 249px;
+ margin-bottom: 30px;
+ }
+`;
+const InnerImg = styled.img`
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+`;
+const Btns = styled.div`
+ display: flex;
+ /* width: 531px; */
+ justify-content: flex-end;
+ margin-top: 174px;
+ & > button {
+ border-radius: 30px;
+ width: 246px;
+ height: 68px;
+ margin-left: 40px;
+ color: ${(props) => props.color || "white"};
+ background: ${(props) => props.background || "#007B59"};
+ border: ${(props) => props.border || "#007B59"};
+ }
+`;
+const Main3 = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 1920px;
+ height: 1080px;
+ background-color: white;
+`;
+const Txt = styled.div`
+ display: flex;
+ align-items: center;
+ width: 1600px;
+ justify-content: space-between;
+ & > div {
+ display: flex;
+ font-size: 32px;
+ }
+`;
+const Items = styled.div`
+ /* height: 316px; */
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+`;
+const Main4 = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 1920px;
+ height: 1080px;
+`;
+const MainPage = () => {
+ const navigate = useNavigate();
+
+ const [startDate, setStartDate] = useState(null);
+ const [endDate, setEndDate] = useState(null);
+
+ const setChangeDate = (dates) => {
+ const [start, end] = dates;
+ setStartDate(start);
+ setEndDate(end);
+ };
+ const today = new Date();
+ const futureDate = new Date(
+ today.getFullYear() + 1,
+ today.getMonth(),
+ today.getDate()
+ );
+ return (
+
+
+
+
+ Suit-carrier
+
+ 사기는 아깝지만 여행에 꼭 필요한 캐리어, 이제는 대여로 해결하세요
+
+
+
+
+
+

+
+ 동네 선택
+
+
+
+
+
+ 대여 기간
+
+ {/* setChangeDate(dates)}
+ /> */}
+
+
+
+
+
+ 색상
+
+
+
+
+
+
+
+
+
+
+
+
+ 사이즈
+
+
+
+
+
+
+
+
+
+ 예산
+
+
+
+
+
+
+
+
+ 브랜드
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 공지사항
+ |
+
+
+ 현재 태풍으로 인해 고객님의 지역(성남시 분당구)의 거래가
+ 지연되고 있습니다.
+
+ 판매자와의 연락을 통해 거래 일정을 조율하시기 바랍니다.
+
+
+
+
+
+
+
+ 캐리어 대여하기
+
+
+
+
+
+ 캐리어 빌려주기
+
+
+
+
+
+ 거래 규칙 살펴보기
+
+
+
+
+
+ 서비스 둘러보기
+
+
+
+
+
+
+
+
+
+
+
+
+
내 검색과
+ 비슷한 제품
+
+
+
+
+
+
+
+
+
+
+
+ SUIT-CARRER가 추천해요
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default MainPage;
diff --git a/src/Page/Profile.js b/src/Page/Profile.js
new file mode 100644
index 0000000..ba7b09e
--- /dev/null
+++ b/src/Page/Profile.js
@@ -0,0 +1,31 @@
+import React, { useEffect, useState } from "react";
+const Profile = () => {
+ const [user_id, setUserId] = useState();
+ const [nickName, setNickName] = useState();
+ const [profileImage, setProfileImage] = useState();
+ const getProfile = async () => {
+ try {
+ // Kakao SDK API를 이용해 사용자 정보 획득
+ let data = await window.Kakao.API.request({
+ url: "/v2/user/me",
+ });
+ // 사용자 정보 변수에 저장
+ setUserId(data.id);
+ setNickName(data.properties.nickname);
+ setProfileImage(data.properties.profile_image);
+ } catch (err) {
+ console.log(err);
+ }
+ };
+ useEffect(() => {
+ getProfile();
+ }, []);
+ return (
+
+
{user_id}
+
{nickName}
+

+
+ );
+};
+export default Profile;
diff --git a/src/Page/Sign.js b/src/Page/Sign.js
new file mode 100644
index 0000000..69a251c
--- /dev/null
+++ b/src/Page/Sign.js
@@ -0,0 +1,577 @@
+import styled from "styled-components";
+import Button from "@mui/material/Button";
+import React from "react";
+import { ReactComponent as Success } from "../assets/img/memberSuccess.svg";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Checkbox from "@mui/material/Checkbox";
+import AgreeTerms from "./SignUp/AgreeTerms";
+import { useState } from "react";
+import MemberAgree from "./SignUp/MemberAgree";
+import { useNavigate } from "react-router";
+import Head from "../Components/head";
+import Bottom from "../Components/bottom";
+
+const Total = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+const Main = styled.div`
+ height: 1080px;
+`;
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+
+//페이지 종류
+const Title1 = styled.div`
+ margin-top: 140px;
+ height: 68px;
+
+ font-size: 42px;
+ font-weight: semiBold;
+ color: #4f4747;
+`;
+
+//네비게이션 바
+const NavDiv = styled(Div)`
+ height: 65px;
+ margin-top: 8px;
+`;
+
+const Hr = styled.div`
+ width: 72px;
+ border-top: 3px solid #f2f2f2;
+ margin-top: 23px;
+`;
+
+const Hrmid = styled(Hr)`
+ width: 222px;
+ border-top: 3px solid #f2f2f2;
+ margin-top: 23px;
+`;
+
+const ActiveCircle = styled.div`
+ border-radius: 50px;
+ height: 51px;
+ width: 51px;
+ background-color: #007b59;
+ justify-content: column;
+`;
+
+const Circle = styled(ActiveCircle)`
+ border-radius: 50px;
+ height: 38px;
+ width: 38px;
+ margin-top: 5px;
+ background-color: #f2f2f2;
+`;
+
+const SubDiv = styled(Div)`
+ height: 50px;
+ align-items: row;
+`;
+
+const SubText = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ color: #b5b5b5;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+const ActivesubText = styled(SubText)`
+ width: 80px;
+ height: 35px;
+
+ color: #007b59;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+// 주의 문구
+const Title2 = styled.div`
+ width: 100%;
+ display: flex;
+ justify-content: space-around;
+ flex-direction: column;
+ align-items: center;
+ height: 68px;
+ margin-top: 19px;
+
+ & > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 21px;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+`;
+
+const Box = styled.div`
+ width: 606px;
+ height: 353px;
+ display: flex;
+ justify-content: center;
+ margin-top: 50px;
+
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const Div1 = styled.div`
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+
+ & > p {
+ margin-left: 41px;
+ margin-top: 116px;
+ display: flex;
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ width: 60px;
+ }
+
+ & > input {
+ margin-top: 106px;
+ margin-left: 112px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ }
+`;
+
+const Div2 = styled.div`
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ height: 60px;
+
+ & > p {
+ margin-left: 41px;
+ margin-top: 20px;
+ display: flex;
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ width: 147px;
+ height: 68px;
+ }
+
+ & > input {
+ margin-top: 13.5px;
+ margin-left: 22px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: col;
+ justify-content: center;
+ }
+`;
+
+const Div3 = styled.div`
+ display: flex;
+ flex-direction: row;
+ margin-left: 325px;
+ margin-top: 49px;
+ width: 230px;
+ height: 68px;
+
+ & > p {
+ margin-top: 20px;
+ //margin-left: 200px;
+ display: flex;
+ font-weight: regular;
+ font-size: 15px;
+ color: #1d1d1d;
+ }
+
+ & > button {
+ display: flex;
+ margin-top: 10px;
+ margin-left: 13px;
+
+ font-size: 13px;
+ font-weight: bold;
+ border-radius: 15px;
+ background-color: #007b59;
+ }
+`;
+
+const Div4 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 117px;
+
+ & > p {
+ height: 68px;
+ margin-left: 40px;
+ margin-top: 27px;
+ display: flex;
+ align-items: center;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+
+ & > input {
+ margin-top: 43px;
+ margin-left: 37px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ }
+`;
+const SubTitle = styled.div`
+ width: 150px;
+ height: 68px;
+ display: flex;
+ justify-content: space-between;
+
+ color: #4f4747;
+ font-size: 16px;
+ font-weight: bold;
+`;
+const H1 = styled.div`
+ display: flex;
+ align-items: flex-start;
+ width: 525px;
+
+ line-height: 140%;
+ font-weight: medium;
+ font-size: 13px;
+ color: #1d1d1d;
+`;
+const Box1 = styled.div`
+ width: 606px;
+ height: 458px;
+ display: flex;
+ justify-content: center;
+ margin-top: 49px;
+ //margin-bottom: 116px;
+
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+const Div5 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 117px;
+
+ & > p {
+ height: 68px;
+ margin-left: 40px;
+ margin-top: 9px;
+ display: flex;
+ align-items: center;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+
+ & > input {
+ width: 304px;
+ height: 36px;
+ margin-top: 19px;
+ margin-left: 17px;
+ display: flex;
+ align-items: center;
+ }
+`;
+const Div6 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 45px;
+
+ & > p {
+ margin-left: 40px;
+ margin-top: 10px;
+ display: flex;
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ height: 68px;
+ }
+
+ & > input {
+ width: 304px;
+ height: 36px;
+ margin-top: 3px;
+ margin-left: 17px;
+ display: flex;
+ justify-content: center;
+ }
+`;
+
+const Div7 = styled.div`
+ display: flex;
+ align-items: center;
+ height: 68px;
+
+ font-weight: bold;
+ font-size: 24px;
+`;
+
+const Icon = styled.div`
+ width: 175px;
+ height: 175px;
+ margin-top: 124px;
+`;
+const Btn = styled.div`
+ margin-top: 10px;
+ & > button {
+ width: 116px;
+ height: 58px;
+ border-radius: 30px;
+ border: none;
+ background-color: #e1e1e1;
+ font-weight: Bold;
+ font-size: 23px;
+ color: white;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+`;
+const Main2 = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 1920px;
+ height: 1080px;
+`;
+const Sign = () => {
+ const [useremail, setUseremail] = useState("");
+ const [userpw, setUserpw] = useState("");
+
+ const [Next, setNext] = useState(false);
+ const [checked, setChecked] = useState(false);
+ const [num, setNum] = useState(0);
+
+ const navigate = useNavigate();
+ //const [user]
+
+ //email, 비밀번호 정규식
+ const emailRegEx =
+ /^[A-Za-z0-9]([-_.]?[A-Za-z0-9])*@[A-Za-z0-9]([-_.]?[A-Za-z0-9])*\.[A-Za-z]{2,3}$/i;
+ const pwRegEx = /^[A-Za-z0-9]{8,20}$/;
+
+ const emailChk = (useremail) => {
+ return emailRegEx.test(useremail);
+ };
+ const pwChk = (userpw) => {
+ if (userpw.match(pwRegEx) === null) {
+ alert("비밀번호 형식을 확인해주세요.");
+ console.log("비밀번호 형식 확인");
+ return;
+ } else {
+ console.log("형식이 맞아요");
+ }
+ };
+
+ const addNum = () => {
+ setNum(num + 1);
+ };
+ const minusNum = () => {
+ setNum(num - 1);
+ };
+ return (
+
+
+
+
+
+ 회원가입
+
+
+ {num == 0 ? : }
+
+ {num == 1 ? : }
+
+ {num == 2 ? : }
+
+ {num == 3 ? : }
+
+
+ {num == 0 ? (
+ 본인인증
+ ) : (
+ 본인인증
+ )}
+ {num == 1 ? (
+
+ 정보입력
+
+ ) : (
+
+ 정보입력
+
+ )}
+ {num == 2 ? (
+
+ 약관동의
+
+ ) : (
+ 약관동의
+ )}
+ {num == 3 ? (
+
+ 가입완료
+
+ ) : (
+ 가입완료
+ )}
+
+
+
+
+ 실제와 일치하는 정보를 입력하셔야 회원가입이 완료됩니다.
+
+
+ *입력하신 정보는 회원가입 여부에만 사용되며 저장되지 않습니다.
+
+
+ {num == 0 && (
+
+
+
+
+ 성명
+
+
+
+ 법적생년월일
+
+
+
+ 본인인증하러가기
+
+
+
+
+
+
+
+
+ )}
+ {num == 1 && (
+
+ )}
+ {num == 2 && (
+
+
+
+
+ }
+ label="약관동의하기"
+ labelPlacement="start"
+ // onChange={handleChange}
+ />
+
+
+ {AgreeTerms}
+
+
+
+
+
+
+
+ )}
+ {num == 3 && (
+
+
+ navigate("/")} />
+
+ 가입이 완료되었습니다.
+
+ )}
+
+
+
+
+
+
+
+ );
+};
+export default Sign;
diff --git a/src/Page/SignUp/AgreeTerms.js b/src/Page/SignUp/AgreeTerms.js
new file mode 100644
index 0000000..d3dbec9
--- /dev/null
+++ b/src/Page/SignUp/AgreeTerms.js
@@ -0,0 +1,8 @@
+const AgreeTerms =
+ //[{
+ // content:
+ "① 개인정보처리자는 다음 각 호의 사항이 포함된 개인정보의 처리 방침(이하 “개인정보 처리방침”이라 한다)을 정하여야 한다. 이 경우 공공기관은 제32조에 따라 등록대상이 되는 개인정보파일에 대하여 개인정보 처리방침을 정한다. 1. 개인정보의 처리 목적 2. 개인정보의 처리 및 보유 기간 3. 개인정보의 제3자 제공에 관한 사항(해당되는 경우에만 정한다) 3의2. 개인정보의 파기절차 및 파기방법(제21조제1항 단서에 따라 개인정보를 보존하여야 하는 경우에는 그 보존근거와 보존하는 개인정보 항목을 포함한다) 4. 개인정보 처리의 위탁에 관한 사항(해당되는 경우에만 정한다) 5. 정보주체와 법정대리인의 권리·의무 및 그 행사방법에 관한 사항 6. 제31조에 따른 개인정보 보호책임자의 성명 또는 개인정보 보호업무 및 관련 고충사항을 처리하는 부서의 명칭과 전화번호 등 연락처 7. 인터넷 접속정보파일 등 개인정보를 자동으로 수집하는 장치의 설치·운영 및 그 거부에 관한 사항(해당하는 경우에만 정한다) 8. 그 밖에 개인정보의 처리에 관하여 대통령령으로 정한 사항 ② 개인정보처리자가 개인정보 처리방침을 수립하거나 변경하는 경우에는 정보주체가 쉽게 확인할 수 있도록 대통령령으로 정하는 방법에 따라 공개하여야 한다. ③ 개인정보 처리방침의 내용과 개인정보처리자와 정보주체 간에 체결한 계약의 내용이 다른 경우에는 정보주체에게 유리한 것을 적용한다. ④ 보호위원회는 개인정보 처리방침의 작성지침을 정하여 개인정보처리자에 게 그 준수를 권장할 수 있다. 12 | 개인정보 처리방침 작성지침 일반 시행령 제31조(개인정보 처리방침의 내용 및 공개방법 등) ① 법 제30조제1항제8호에서 “대통령령 으로 정한 사항”이란 다음 각 호의 사항을 말한다. 1. 처리하는 개인정보의 항목 2. 삭제 <2020. 8. 4.> 3. 제30조 또는 제48조의2에 따른 개인정보의 안전성 확보 조치에 관한 사항 표준지침 제18조(개인정보 처리방침의 작성기준 등) ① 개인정보처리자가 개인정보 처리방침을 작성하는 때에는 법 제30조제1항 각 호 및 영 제31조제1항 각 호의 사항을 명시적으로 구분하되, 알기 쉬운 용어로 구체적이고 명확하게 표현하여야 한다. ② 개인정보처리자는 처리하는 개인정보가 개인정보의 처리 목적에 필요한 최소한이라는 점을 밝혀야 한다.";
+
+// }]
+
+export default AgreeTerms;
diff --git a/src/Page/SignUp/InputInfo.js b/src/Page/SignUp/InputInfo.js
new file mode 100644
index 0000000..bab5fb4
--- /dev/null
+++ b/src/Page/SignUp/InputInfo.js
@@ -0,0 +1,331 @@
+import styled from "styled-components";
+import Button from "@mui/material/Button";
+import React from "react";
+
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+
+//페이지 종류
+const Title1 = styled.div`
+ margin-top: 152px;
+ width: 146px;
+ height: 68px;
+
+ font-size: 42px;
+ font-weight: semiBold;
+ color: #4f4747;
+`;
+
+//네비게이션 바
+const NavDiv = styled(Div)`
+ height: 65px;
+ margin-top: 8px;
+`;
+
+const Hr = styled.div`
+ width: 72px;
+ border-top: 3px solid #f2f2f2;
+ margin-top: 23px;
+`;
+
+const Hrmid = styled(Hr)`
+ width: 222px;
+ border-top: 3px solid #f2f2f2;
+ margin-top: 23px;
+`;
+
+const ActiveCircle = styled.div`
+ border-radius: 50px;
+ height: 51px;
+ width: 51px;
+ background-color: #007b59;
+ justify-content: column;
+`;
+
+const Circle = styled(ActiveCircle)`
+ border-radius: 50px;
+ height: 38px;
+ width: 38px;
+ margin-top: 5px;
+ background-color: #f2f2f2;
+`;
+
+const SubDiv = styled(Div)`
+ height: 50px;
+ align-items: row;
+`;
+
+const SubText = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ color: #b5b5b5;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+const ActivesubText = styled(SubText)`
+ width: 80px;
+ height: 35px;
+
+ color: #007b59;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+// 주의 문구
+const Title2 = styled.div`
+ width: 100%;
+ display: flex;
+ justify-content: space-around;
+ flex-direction: column;
+ align-items: center;
+ height: 68px;
+ margin-top: 19px;
+
+ & > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 21px;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+`;
+
+const Box = styled.div`
+ width: 606px;
+ height: 353px;
+ display: flex;
+ justify-content: center;
+ margin-top: 99px;
+ margin-bottom: 174px;
+
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const Div1 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 117px;
+
+ & > p {
+ width: 63px;
+ height: 68px;
+ margin-left: 40px;
+ margin-top: 27px;
+ display: flex;
+ align-items: center;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+
+ & > input {
+ margin-top: 43px;
+ margin-left: 37px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ }
+`;
+
+const Div2 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 117px;
+
+ & > p {
+ height: 68px;
+ margin-left: 40px;
+ margin-top: 9px;
+ display: flex;
+ align-items: center;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+
+ & > input {
+ width: 304px;
+ height: 36px;
+ margin-top: 19px;
+ margin-left: 17px;
+ display: flex;
+ align-items: center;
+ }
+`;
+
+const Div3 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 45px;
+
+ & > p {
+ margin-left: 40px;
+ margin-top: 10px;
+ display: flex;
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ height: 68px;
+ }
+
+ & > input {
+ width: 304px;
+ height: 36px;
+ margin-top: 3px;
+ margin-left: 17px;
+ display: flex;
+ justify-content: center;
+ }
+`;
+
+const Div4 = styled.div`
+ display: flex;
+ flex-direction: row;
+ margin-left: 265px;
+ margin-top: 15px;
+ height: 68px;
+
+ & > button {
+ display: flex;
+ margin-top: 10px;
+ margin-left: 13px;
+
+ font-size: 12px;
+ font-weight: bold;
+ border-radius: 15px;
+ background-color: #007b59;
+ }
+`;
+
+const InputInfo = () => {
+ const [useremail, setUseremail] = React.useState("");
+ const [userpw, setUserpw] = React.useState("");
+ //const [user]
+
+ //email, 비밀번호 정규식
+ const emailRegEx =
+ /^[A-Za-z0-9]([-_.]?[A-Za-z0-9])*@[A-Za-z0-9]([-_.]?[A-Za-z0-9])*\.[A-Za-z]{2,3}$/i;
+ const pwRegEx = /^[A-Za-z0-9]{8,20}$/;
+
+ const emailChk = (useremail) => {
+ return emailRegEx.test(useremail);
+ };
+ const pwChk = (userpw) => {
+ if (userpw.match(pwRegEx) === null) {
+ alert("비밀번호 형식을 확인해주세요.");
+ console.log("비밀번호 형식 화긴");
+ return;
+ } else {
+ console.log("형식이 맞아요");
+ }
+ };
+
+ return (
+
+ );
+};
+
+export default InputInfo;
diff --git a/src/Page/SignUp/MemberAgree.js b/src/Page/SignUp/MemberAgree.js
new file mode 100644
index 0000000..8def498
--- /dev/null
+++ b/src/Page/SignUp/MemberAgree.js
@@ -0,0 +1,246 @@
+import styled from "styled-components";
+import Button from "@mui/material/Button";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Checkbox from "@mui/material/Checkbox";
+import { useState } from "react";
+import AgreeTerms from "./AgreeTerms";
+
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+
+//페이지 종류
+const Title1 = styled.div`
+ margin-top: 121px;
+ width: 146px;
+ height: 68px;
+
+ font-size: 42px;
+ font-weight: semiBold;
+ color: #4f4747;
+`;
+
+//네비게이션 바
+const NavDiv = styled(Div)`
+ height: 65px;
+ margin-top: 31px;
+`;
+
+const Hr = styled.div`
+ width: 72px;
+ border-top: 3px solid #f2f2f2;
+ margin-top: 23px;
+`;
+
+const Hrmid = styled(Hr)`
+ width: 222px;
+ border-top: 3px solid #f2f2f2;
+ margin-top: 23px;
+`;
+
+const ActiveCircle = styled.div`
+ border-radius: 50px;
+ height: 51px;
+ width: 51px;
+ background-color: #007b59;
+ justify-content: column;
+`;
+
+const Circle = styled(ActiveCircle)`
+ border-radius: 50px;
+ height: 38px;
+ width: 38px;
+ margin-top: 5px;
+ background-color: #f2f2f2;
+`;
+
+const SubDiv = styled(Div)`
+ height: 50px;
+ align-items: row;
+`;
+
+const SubText = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ color: #b5b5b5;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+const ActivesubText = styled(SubText)`
+ width: 80px;
+ height: 35px;
+
+ color: #007b59;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+// 주의 문구
+const Title2 = styled.div`
+ width: 100%;
+ display: flex;
+ justify-content: space-around;
+ flex-direction: column;
+ align-items: center;
+ height: 68px;
+ margin-top: 41px;
+
+ & > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 21px;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+`;
+
+const Box = styled.div`
+ width: 606px;
+ height: 458px;
+ display: flex;
+ justify-content: center;
+ margin-top: 49px;
+ //margin-bottom: 116px;
+
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ //align-items: center;
+ align-items: flex-start;
+`;
+
+const SubTitle = styled.div`
+ width: 150px;
+ height: 68px;
+ display: flex;
+ justify-content: space-between;
+
+ color: #4f4747;
+ font-size: 16px;
+ font-weight: bold;
+`;
+
+const Div1 = styled.div`
+ display: flex;
+ align-items: flex-start;
+ width: 525px;
+
+ line-height: 140%;
+ font-weight: medium;
+ font-size: 13px;
+ color: #1d1d1d;
+`;
+
+const Div2 = styled(Div)`
+ width: 116px;
+ height: 58px;
+ margin-top: 12px;
+ margin-left: 490px;
+
+ & > button {
+ width: 116px;
+ height: 58px;
+ border-radius: 30px;
+ border: none;
+ background-color: #e1e1e1;
+ //background-color: $(props=>props.bg);
+ // background-color: { Next==true ? ${(props) =>
+ (props.bg = "#007B59")} : ${(props) => (props.bg = "#1D1D1D")}};
+
+ font-weight: Bold;
+ font-size: 23px;
+ color: white;
+ }
+`;
+
+const MemberAgree = (props) => {
+ // 체크되었을 때(=true)일 때 Next를 true로 바꿔라(=bg color=녹색)
+
+ const [Next, setNext] = useState(false);
+ const [checked, setChecked] = useState(false);
+
+ // const handleChange = (event) => {()=>
+ // setChecked(true, event.target.checked);
+ // };
+
+ return (
+
+
+ 회원가입
+
+
+
+
+
+
+
+
+
+
+
+
+ 본인인증
+
+ 정보입력
+
+ 약관동의
+ 가입완료
+
+
+
+
+ 실제와 일치하는 정보를 입력하셔야 회원가입이 완료됩니다.
+
+
+ *입력하신 정보는 회원가입 여부에만 사용되며 저장되지 않습니다.
+
+
+
+ {/* 체크되었을 때(=true)일 때 Next를 true로 바꿔라(=bg color=녹색) */}
+
+
+
+
+ }
+ label="약관동의하기"
+ labelPlacement="start"
+ // onChange={handleChange}
+ />
+
+
+ {AgreeTerms}
+
+
+ {/* { checked==true ? setNext(true) : setNext(false)} */}
+ {/* { Next==true ? props.bg='#007B59' : props.bg='#1D1D1D'} */}
+
+
+
+
+
+ );
+};
+
+export default MemberAgree;
diff --git a/src/Page/SignUp/MemberSuccess.js b/src/Page/SignUp/MemberSuccess.js
new file mode 100644
index 0000000..66966a5
--- /dev/null
+++ b/src/Page/SignUp/MemberSuccess.js
@@ -0,0 +1,180 @@
+import styled from "styled-components";
+import { ReactComponent as Success } from "../../assets/img/memberSuccess.svg";
+
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+
+//페이지 종류
+const Title1 = styled.div`
+ margin-top: 121px;
+ width: 146px;
+ height: 68px;
+
+ font-size: 42px;
+ font-weight: semiBold;
+ color: #4F4747;
+`;
+
+//네비게이션 바
+const NavDiv = styled(Div)`
+ height: 65px;
+ margin-top: 31px;
+`;
+
+const Hr = styled.div`
+ width: 72px;
+ border-top: 3px solid #F2F2F2;
+ margin-top: 23px;
+`;
+
+const Hrmid = styled(Hr)`
+ width: 222px;
+ border-top: 3px solid #F2F2F2;
+ margin-top: 23px;
+`;
+
+const ActiveCircle=styled.div`
+ border-radius: 50px;
+ height: 51px;
+ width: 51px;
+ background-color: #007B59;
+ justify-content: column;
+`;
+
+const Circle=styled(ActiveCircle)`
+ border-radius: 50px;
+ height: 38px;
+ width: 38px;
+ margin-top: 5px;
+ background-color: #F2F2F2;
+`;
+
+const SubDiv = styled(Div)`
+ height: 50px;
+ align-items: row;
+`;
+
+const SubText = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ color: #B5B5B5;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+const ActivesubText = styled(SubText)`
+ width: 80px;
+ height: 35px;
+
+ color: #007B59;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+// 주의 문구
+const Title2 = styled.div`
+ width: 100%;
+ display: flex;
+ justify-content: space-around;
+ flex-direction: column;
+ align-items: center;
+ height: 68px;
+ margin-top: 41px;
+}
+
+ & > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 21px;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1D1D1D;
+ }
+`;
+
+const Box = styled.div`
+ width: 606px;
+ height: 458px;
+ display: flex;
+ justify-content: center;
+ margin-top: 49px;
+
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+`;
+
+const Icon=styled.div`
+ width: 175px;
+ height: 175px;
+ margin-top: 124px;
+`;
+
+const Div1 = styled.div`
+ display: flex;
+ align-items: center;
+ height: 68px;
+
+ font-weight: bold;
+ font-size: 24px;
+`;
+
+const MemberSuccess = () => {
+
+ return (
+
+
+
+ 회원가입
+
+
+
+
+
+
+
+
+
+
+
+
+ 본인인증
+ 정보입력
+ 약관동의
+ 가입완료
+
+
+
+ 실제와 일치하는 정보를 입력하셔야 회원가입이 완료됩니다.
+ *입력하신 정보는 회원가입 여부에만 사용되며 저장되지 않습니다.
+
+
+
+
+ 가입이 완료되었습니다.
+
+
+
+
+ );
+};
+
+export default MemberSuccess;
diff --git a/src/Page/SignUp/PhoneAuth.js b/src/Page/SignUp/PhoneAuth.js
new file mode 100644
index 0000000..8d89103
--- /dev/null
+++ b/src/Page/SignUp/PhoneAuth.js
@@ -0,0 +1,279 @@
+import styled from "styled-components";
+import Button from "@mui/material/Button";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Checkbox from "@mui/material/Checkbox";
+import { useNavigate } from "react-router";
+
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+
+//페이지 종류
+const Title1 = styled.div`
+ display: flex;
+ align-items: center;
+ margin-top: 169px;
+ height: 68px;
+
+ font-size: 42px;
+ font-weight: semiBold;
+ color: #4f4747;
+`;
+
+// 주의 문구
+const Title2 = styled.div`
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 68px;
+ margin-top: 3px;
+
+ & > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 21px;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+`;
+
+const Box = styled.div`
+ width: 792px;
+ height: 500px;
+ display: flex;
+ justify-content: center;
+ //margin-bottom: 174px;
+
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const Div1 = styled.div`
+ display: flex;
+ flex-direction: row;
+ width: 555px;
+ height: 117px;
+ margin-top: 70px;
+
+ & > p {
+ width: 63px;
+ height: 68px;
+ margin-left: 20px;
+ margin-top: 27px;
+ display: flex;
+ align-items: center;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+
+ & > input {
+ margin-top: 43px;
+ //margin-left: 37px;
+ margin-left: 60px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ }
+`;
+
+const Div2 = styled.div`
+ display: flex;
+ flex-direction: row;
+ //width: 555px;
+ height: 60px;
+ margin-top: 20px;
+
+ & > p {
+ height: 68px;
+ margin-left: 40px;
+ margin-right: 10px;
+ margin-top: 2px;
+ display: flex;
+ align-items: center;
+
+ font-weight: regular;
+ font-size: 24px;
+ color: #1d1d1d;
+ }
+
+ & > input {
+ width: 304px;
+ height: 36px;
+ margin-top: 19px;
+ display: flex;
+ align-items: center;
+ }
+
+ & > button {
+ display: flex;
+ margin-top: 19px;
+ margin-left: 13px;
+
+ font-size: 13px;
+ font-weight: bold;
+ border-radius: 15px;
+ background-color: #007b59;
+ }
+`;
+
+const Div3 = styled.div`
+ display: flex;
+ justify-content: row;
+ flex-direction: column;
+ width: 555px;
+ height: 100px;
+
+ & > input {
+ width: 304px;
+ height: 36px;
+ margin-top: 11px;
+ margin-left: 141px;
+
+ display: flex;
+ justify-content: center;
+ }
+
+ // a {
+ // display: flex;
+ // flex-direction: row;
+ // & : visited{
+ // color: none;
+ // }
+ // }
+
+ & > div {
+ width: 310px;
+ display: flex;
+ justify-content: space-between;
+ flex-direction: row;
+ align-items: center;
+ margin-left: 138px;
+ }
+`;
+
+const A = styled.a`
+ display: flex;
+ flex-direction: row;
+ &:visited {
+ text-decoration: none;
+ }
+`;
+
+const Div4 = styled.div`
+ display: flex;
+ flex-direction: row;
+ margin-left: 265px;
+ margin-top: 15px;
+ height: 68px;
+
+ & > button {
+ display: flex;
+ margin-right: 230px;
+
+ font-size: 20px;
+ font-weight: bold;
+ }
+`;
+
+const PhoneAuth = () => {
+ const navigate = useNavigate();
+ return (
+
+ );
+};
+
+export default PhoneAuth;
diff --git a/src/Page/SignUp/SelfAuth.js b/src/Page/SignUp/SelfAuth.js
new file mode 100644
index 0000000..dc57a3c
--- /dev/null
+++ b/src/Page/SignUp/SelfAuth.js
@@ -0,0 +1,260 @@
+import styled from "styled-components";
+import Button from '@mui/material/Button';
+
+const Div = styled.div`
+ display: flex;
+ justify-content: center;
+ width: 100%;
+`;
+const Center = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+`;
+
+//페이지 종류
+const Title1 = styled.div`
+ font-size: 42px;
+ font-weight: semiBold;
+ color: #4F4747;
+
+ margin-top: 152px;
+ width: 146px;
+ height: 68px;
+`;
+
+//네비게이션 바
+const NavDiv = styled(Div)`
+ height: 65px;
+ margin-top: 31px;
+`;
+
+const Hr = styled.div`
+ width: 72px;
+ border-top: 3px solid #F2F2F2;
+ margin-top: 23px;
+`;
+
+const Hrmid = styled(Hr)`
+ width: 222px;
+ border-top: 3px solid #F2F2F2;
+ margin-top: 23px;
+`;
+
+const ActiveCircle=styled.div`
+ border-radius: 50px;
+ height: 51px;
+ width: 51px;
+ background-color: #007B59;
+ justify-content: column;
+`;
+
+const Circle=styled(ActiveCircle)`
+ border-radius: 50px;
+ height: 38px;
+ width: 38px;
+ margin-top: 5px;
+ background-color: #F2F2F2;
+`;
+
+const SubDiv = styled(Div)`
+ height: 50px;
+ align-items: row;
+`;
+
+const SubText = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ color: #B5B5B5;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+const ActivesubText = styled(SubText)`
+ width: 80px;
+ height: 35px;
+
+ color: #007B59;
+ font-size: 20px;
+ font-weight: regular;
+`;
+
+// 주의 문구
+const Title2 = styled.div`
+ width: 100%;
+ display: flex;
+ justify-content: space-around;
+ flex-direction: column;
+ align-items: center;
+ height: 68px;
+ margin-top: 19px;
+}
+
+ & > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 21px;
+
+ font-weight: regular;
+ font-size: 24px;
+ font-color: #1D1D1D;
+ }
+`;
+
+const Box = styled.div`
+ width: 615px;
+ height: 376px;
+ display: flex;
+ justify-content: center;
+ margin-top: 31px;
+ margin-bottom: 196px;
+ border-radius: 30px;
+ border: 1px solid #b5b5b5;
+ font-size: 15px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+`;
+
+const Div1 = styled.div`
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+
+& > p {
+ margin-left: 41px;
+ margin-top: 116px;
+ display: flex;
+ font-weight: regular;
+ font-size: 24px;
+ font-color: #1D1D1D;
+ width: 60px;
+ }
+
+ & > input {
+ margin-top: 106px;
+ margin-left: 112px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+`;
+const Div2 = styled.div`
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ height: 60px;
+
+ & > p {
+ margin-left: 41px;
+ margin-top: 20px;
+ display: flex;
+ font-weight: regular;
+ font-size: 24px;
+ font-color: #1D1D1D;
+ width: 147px;
+ height:68px;
+ }
+
+ & > input {
+ margin-top: 13.5px;
+ margin-left: 22px;
+ width: 304px;
+ height: 36px;
+ display: flex;
+ flex-direction: col;
+ justify-content: center;
+ }
+`;
+
+const Div3 = styled.div`
+ display: flex;
+ flex-direction: row;
+ margin-left: 325px;
+ margin-top: 49px;
+ width: 230px;
+ height: 68px;
+
+ & > p {
+ margin-top: 20px;
+ //margin-left: 200px;
+ display: flex;
+ font-weight: regular;
+ font-size: 15px;
+ font-color: #1D1D1D;
+ }
+
+ & > button {
+ display: flex;
+ margin-top: 10px;
+ margin-left: 13px;
+
+ font-size: 13px;
+ font-weight: bold;
+ border-radius: 15px;
+ background-color: #007B59;
+ }
+`;
+
+const Link=styled.div`
+
+`;
+
+const SelfAuth = () => {
+ return (
+
+
+ 회원가입
+
+
+
+
+
+
+
+
+
+
+
+
+ 본인인증
+ 정보입력
+ 약관동의
+ 가입완료
+
+
+
+ 실제와 일치하는 정보를 입력하셔야 회원가입이 완료됩니다.
+ *입력하신 정보는 회원가입 여부에만 사용되며 저장되지 않습니다.
+
+
+
+
+
+ 성명
+
+
+
+ 법적생년월일
+
+
+
+ 본인인증하러가기
+
+
+
+
+
+
+ );
+};
+export default SelfAuth;
diff --git a/src/assets/img/memberSuccess.svg b/src/assets/img/memberSuccess.svg
new file mode 100644
index 0000000..341e731
--- /dev/null
+++ b/src/assets/img/memberSuccess.svg
@@ -0,0 +1,10 @@
+
+