diff --git a/.gitignore b/.gitignore index 4d29575..e61fe74 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,4 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -# dependencies /node_modules -/.pnp -.pnp.js +5th.md -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..bf9b636 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,62 @@ + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b3a20a8 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 0000000..727b8b5 --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/react-messenger-15th.iml b/.idea/react-messenger-15th.iml new file mode 100644 index 0000000..0c8867d --- /dev/null +++ b/.idea/react-messenger-15th.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0a72520 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": true +} diff --git a/README.md b/README.md index 7a95c82..58beeac 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,70 @@ -# 4์ฃผ์ฐจ ๋ฏธ์…˜: React-Messenger ๐Ÿ’Œ +# Getting Started with Create React App -## ์„œ๋ก  +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). -์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ™Œ๐Ÿป 15๊ธฐ ํ”„๋ก ํŠธ ํŒŒํŠธ์žฅ **๊น€์ฃผํ˜„**์ž…๋‹ˆ๋‹ค. +## Available Scripts -์ด๋ฒˆ์ฃผ๋ถ€ํ„ฐ๋Š” ๋“œ๋””์–ด ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์—์„œ ๋ฒ—์–ด๋‚˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์ธ **messenger** ๋งŒ๋“ค๊ธฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฏธ์…˜์€ ์ €๋ฒˆ ๋ฏธ์…˜์˜ ์—ฐ์žฅ์„ ์œผ๋กœ, TypeScript์™€ ๋‹ค์–‘ํ•œ React Hook์— ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์ฐจ์— ์ค‘์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Hook์€ React๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ต‰์žฅํžˆ ์ž์ฃผ ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ค‘์ ์ ์œผ๋กœ ๊ณต๋ถ€ํ•ด ๋ณด์„ธ์š”. +In the project directory, you can run: -๊ทธ๋Ÿผ ์ด๋ฒˆ ๋ฏธ์…˜๋„ ํŒŒ์ดํŒ…์ž…๋‹ˆ๋‹ค โค๏ธโ€๐Ÿ”ฅ +### `npm start` -# ๋ฏธ์…˜ +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. -## ๋ฏธ์…˜ ๋ชฉํ‘œ +The page will reload when you make changes.\ +You may also see any lint errors in the console. -- TypeScript์— ์ต์ˆ™ํ•ด์ง‘๋‹ˆ๋‹ค. -- useState๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. -- useEffect์™€ useRef์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. -- styled-components๋ฅผ ํ†ตํ•œ CSS-in-JS ๋ฐ CSS Preprocessor์˜ ์‚ฌ์šฉ๋ฒ•์— ์ต์ˆ™ํ•ด์ง‘๋‹ˆ๋‹ค. +### `npm test` -## ๊ธฐํ•œ +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. -- 2022๋…„ 5์›” 6์ผ ๊ธˆ์š”์ผ **(๊ธฐํ•œ ์—„์ˆ˜!)** +### `npm run build` -## ํ•„์ˆ˜ ์š”๊ฑด +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. -- ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. -- styled-components๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. -- ์ปดํฌ๋„ŒํŠธ ๋„ค์ด๋ฐ์— ์‹ ๊ฒฝ์จ ๋ด…๋‹ˆ๋‹ค. -- UI๋Š” ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•˜๋˜, ๋ฐ˜์‘ํ˜•๊นŒ์ง„ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค. +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! -## ํ•„์ˆ˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. -- [๊ฒฐ๊ณผ ํ™”๋ฉด](https://corinth-messenger.vercel.app/)๊ณผ๊ฐ™์ด ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. -- ์ฑ„ํŒ…๋ฐฉ ์ƒ๋‹จ์˜ ํ”„๋กœํ•„์„ ํด๋ฆญํ•˜๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -- ๊ณต๋ฐฑ ์ž…๋ ฅ ์‹œ alert ๋ฉ”์„ธ์ง€๋ฅผ ๋„์šฐ๊ณ , ์ „์†ก๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. -- ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์ฑ„ํŒ…๋ฐฉ ํ•˜๋‹จ์œผ๋กœ ์Šคํฌ๋กค์„ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. (Hint: useEffect + scrollTo) -- ๋ฉ”์„ธ์ง€์— ์œ ์ € ์ •๋ณด(ํ”„๋กœํ•„ ์‚ฌ์ง„, ์ด๋ฆ„)๋ฅผ ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. -- user์™€ message ๋ฐ์ดํ„ฐ๋ฅผ json ํ˜•์‹์˜ ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. +### `npm run eject` -# ๋งํฌ ๋ฐ ์ฐธ๊ณ ์ž๋ฃŒ +**Note: this is a one-way operation. Once you `eject`, you can't go back!** -- [React docs - Hook](https://ko.reactjs.org/docs/hooks-intro.html) -- [React์˜ Hooks ์™„๋ฒฝ ์ •๋ณตํ•˜๊ธฐ](https://velog.io/@velopert/react-hooks#1-usestate) -- [useEffect ์™„๋ฒฝ ๊ฐ€์ด๋“œ](https://overreacted.io/ko/a-complete-guide-to-useeffect/) -- [๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉํ•˜๊ธฐ (์‹œ๋ฆฌ์ฆˆ)](https://velog.io/@velopert/series/react-with-typescript) +If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. + +You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/package-lock.json b/package-lock.json index 43e807c..9a5883b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,33 @@ { - "name": "react-messenger-15th", + "name": "front", "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "react-messenger-15th", + "name": "front", "version": "0.1.0", "dependencies": { "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^13.1.1", + "@testing-library/react": "^13.2.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.1", + "@types/node": "^17.0.33", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.4", + "@types/styled-components": "^5.1.25", "react": "^18.1.0", "react-dom": "^18.1.0", + "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", + "recoil": "^0.7.3-alpha.2", + "styled-components": "^5.3.5", + "styled-normalize": "^8.0.7", + "typescript": "^4.6.4", "web-vitals": "^2.1.4" + }, + "devDependencies": { + "prettier": "^2.6.2" } }, "node_modules/@ampproject/remapping": { @@ -1972,19 +1985,71 @@ "postcss": "^8.3" } }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.0.tgz", + "integrity": "sha512-q8c4bs1GumAiRenmFjASBcWSLKrbzHzWl6C2HcaAxAXIiL2rUlUWbqQZUjwVG5tied0rld19j/Mm90K3qI26vw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.0.tgz", + "integrity": "sha512-T5ZyNSw9G0x0UDFiXV40a7VjKw2b+l4G+S0sctKqxhx8cg9QtMUAGwJBVU9mHPDPoZEmwm0tEoukjl4zb9MU7Q==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz", + "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==", + "dependencies": { + "@emotion/memoize": "^0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "node_modules/@eslint/eslintrc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", - "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", + "espree": "^9.3.2", "globals": "^13.9.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1997,9 +2062,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", + "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", "dependencies": { "type-fest": "^0.20.2" }, @@ -2726,30 +2791,30 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", - "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz", + "integrity": "sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -3340,9 +3405,9 @@ } }, "node_modules/@testing-library/react": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.1.1.tgz", - "integrity": "sha512-8mirlAa0OKaUvnqnZF6MdAh2tReYA2KtWVw1PKvaF5EcCZqgK5pl8iF+3uW90JdG5Ua2c2c2E2wtLdaug3dsVg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.2.0.tgz", + "integrity": "sha512-Bprbz/SZVONCJy5f7hcihNCv313IJXdYiv0nSJklIs1SQCIHHNlnGNkosSXnGZTmesyGIcBGNppYhXcc11pb7g==", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.5.0", @@ -3515,15 +3580,24 @@ "@types/node": "*" } }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dependencies": { "@types/node": "*" } @@ -3550,9 +3624,9 @@ } }, "node_modules/@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", "dependencies": { "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" @@ -3574,9 +3648,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/node": { - "version": "17.0.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.30.tgz", - "integrity": "sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw==" + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -3609,9 +3683,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.0.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.8.tgz", - "integrity": "sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -3619,9 +3693,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.3.tgz", - "integrity": "sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ==", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.4.tgz", + "integrity": "sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==", "dependencies": { "@types/react": "*" } @@ -3674,6 +3748,16 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" }, + "node_modules/@types/styled-components": { + "version": "5.1.25", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.25.tgz", + "integrity": "sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ==", + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, "node_modules/@types/testing-library__jest-dom": { "version": "5.14.3", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", @@ -3709,13 +3793,13 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.21.0.tgz", - "integrity": "sha512-fTU85q8v5ZLpoZEyn/u1S2qrFOhi33Edo2CZ0+q1gDaWWm0JuPh3bgOyU8lM0edIEYgKLDkPFiZX2MOupgjlyg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz", + "integrity": "sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==", "dependencies": { - "@typescript-eslint/scope-manager": "5.21.0", - "@typescript-eslint/type-utils": "5.21.0", - "@typescript-eslint/utils": "5.21.0", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/type-utils": "5.22.0", + "@typescript-eslint/utils": "5.22.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -3741,11 +3825,11 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.21.0.tgz", - "integrity": "sha512-mzF6ert/6iQoESV0z9v5/mEaJRKL4fv68rHoZ6exM38xjxkw4MNx54B7ferrnMTM/GIRKLDaJ3JPRi+Dxa5Hlg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.22.0.tgz", + "integrity": "sha512-rKxoCUtAHwEH6IcAoVpqipY6Th+YKW7WFspAKu0IFdbdKZpveFBeqxxE9Xn+GWikhq1o03V3VXbxIe+GdhggiQ==", "dependencies": { - "@typescript-eslint/utils": "5.21.0" + "@typescript-eslint/utils": "5.22.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3759,13 +3843,13 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.21.0.tgz", - "integrity": "sha512-8RUwTO77hstXUr3pZoWZbRQUxXcSXafZ8/5gpnQCfXvgmP9gpNlRGlWzvfbEQ14TLjmtU8eGnONkff8U2ui2Eg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", + "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", "dependencies": { - "@typescript-eslint/scope-manager": "5.21.0", - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/typescript-estree": "5.21.0", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", "debug": "^4.3.2" }, "engines": { @@ -3785,12 +3869,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.21.0.tgz", - "integrity": "sha512-XTX0g0IhvzcH/e3393SvjRCfYQxgxtYzL3UREteUneo72EFlt7UNoiYnikUtmGVobTbhUDByhJ4xRBNe+34kOQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", + "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", "dependencies": { - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/visitor-keys": "5.21.0" + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3801,11 +3885,11 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.21.0.tgz", - "integrity": "sha512-MxmLZj0tkGlkcZCSE17ORaHl8Th3JQwBzyXL/uvC6sNmu128LsgjTX0NIzy+wdH2J7Pd02GN8FaoudJntFvSOw==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz", + "integrity": "sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==", "dependencies": { - "@typescript-eslint/utils": "5.21.0", + "@typescript-eslint/utils": "5.22.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -3826,9 +3910,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.21.0.tgz", - "integrity": "sha512-XnOOo5Wc2cBlq8Lh5WNvAgHzpjnEzxn4CJBwGkcau7b/tZ556qrWXQz4DJyChYg8JZAD06kczrdgFPpEQZfDsA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", + "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3838,12 +3922,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.21.0.tgz", - "integrity": "sha512-Y8Y2T2FNvm08qlcoSMoNchh9y2Uj3QmjtwNMdRQkcFG7Muz//wfJBGBxh8R7HAGQFpgYpdHqUpEoPQk+q9Kjfg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", + "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", "dependencies": { - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/visitor-keys": "5.21.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -3864,14 +3948,14 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.21.0.tgz", - "integrity": "sha512-q/emogbND9wry7zxy7VYri+7ydawo2HDZhRZ5k6yggIvXa7PvBbAAZ4PFH/oZLem72ezC4Pr63rJvDK/sTlL8Q==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz", + "integrity": "sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.21.0", - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/typescript-estree": "5.21.0", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -3907,11 +3991,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.21.0.tgz", - "integrity": "sha512-SX8jNN+iHqAF0riZQMkm7e8+POXa/fXw5cxL+gjpyP+FI+JVNhii53EmQgDAfDcBpFekYSlO0fGytMQwRiMQCA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", + "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", "dependencies": { - "@typescript-eslint/types": "5.21.0", + "@typescript-eslint/types": "5.22.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -4333,13 +4417,13 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" }, @@ -4403,12 +4487,9 @@ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" }, "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -4435,9 +4516,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.5.tgz", - "integrity": "sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw==", + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", "funding": [ { "type": "opencollective", @@ -4449,8 +4530,8 @@ } ], "dependencies": { - "browserslist": "^4.20.2", - "caniuse-lite": "^1.0.30001332", + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -4702,6 +4783,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/babel-plugin-styled-components": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", + "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11", + "picomatch": "^2.3.0" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, "node_modules/babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", @@ -5016,6 +5117,11 @@ "node": ">= 6" } }, + "node_modules/camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -5028,9 +5134,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001334", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz", - "integrity": "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==", + "version": "1.0.30001338", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz", + "integrity": "sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==", "funding": [ { "type": "opencollective", @@ -5374,9 +5480,9 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "node_modules/core-js": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.3.tgz", - "integrity": "sha512-1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.4.tgz", + "integrity": "sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -5384,9 +5490,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.3.tgz", - "integrity": "sha512-wliMbvPI2idgFWpFe7UEyHMvu6HWgW8WA+HnDRtgzoSDYvXFMpoGX1H3tPDDXrcfUSyXafCLDd7hOeMQHEZxGw==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.4.tgz", + "integrity": "sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA==", "dependencies": { "browserslist": "^4.20.3", "semver": "7.0.0" @@ -5405,9 +5511,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.3.tgz", - "integrity": "sha512-oN88zz7nmKROMy8GOjs+LN+0LedIvbMdnB5XsTlhcOg1WGARt9l0LFg0zohdoFmCsEZ1h2ZbSQ6azj3M+vhzwQ==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.4.tgz", + "integrity": "sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -5482,6 +5588,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": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", + "engines": { + "node": ">=4" + } + }, "node_modules/css-declaration-sorter": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", @@ -5663,6 +5777,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.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "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", @@ -5708,9 +5832,13 @@ } }, "node_modules/cssdb": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", - "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==" + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.1.tgz", + "integrity": "sha512-0/nZEYfp8SFEzJkMud8NxZJsGfD7RHDJti6GRBLZptIwAzco6RTx1KgwFl4mGWsYS0ZNbCrsY9QryhQ4ldF3Mg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } }, "node_modules/cssesc": { "version": "3.0.0", @@ -6231,9 +6359,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.129", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz", - "integrity": "sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==" + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" }, "node_modules/emittery": { "version": "0.8.1", @@ -6304,16 +6432,18 @@ } }, "node_modules/es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz", + "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.1", "get-symbol-description": "^1.0.0", "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", @@ -6325,9 +6455,10 @@ "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "regexp.prototype.flags": "^1.4.1", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6464,11 +6595,11 @@ } }, "node_modules/eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", - "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", "dependencies": { - "@eslint/eslintrc": "^1.2.2", + "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -6479,7 +6610,7 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6495,7 +6626,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -6824,9 +6955,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.3.1.tgz", - "integrity": "sha512-OfF4dlG/q6ck6DL3P8Z0FPdK0dU5K57gsBu7eUcaVbwYKaNzjgejnXiM9CCUevppORkvfek+9D3Uj/9ZZ8Vz8g==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.4.0.tgz", + "integrity": "sha512-XjxIf4g33KaZXxRNbR33+0WcRQ/zt8N0R58IY6/kkHnrY6zPsC1gs3u5cTZr5eUmCZN/sjoPak3uF5vHGKg2wg==", "dependencies": { "@typescript-eslint/utils": "^5.13.0" }, @@ -6968,9 +7099,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", + "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", "dependencies": { "type-fest": "^0.20.2" }, @@ -7023,12 +7154,12 @@ } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -7456,9 +7587,9 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" }, "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", "funding": [ { "type": "individual", @@ -7712,6 +7843,23 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -7909,6 +8057,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/hamt_plus": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz", + "integrity": "sha1-4hwlKWjH4zsg9qGwlM2FeHomVgE=" + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -7990,6 +8143,27 @@ "he": "bin/he" } }, + "node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "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", @@ -8792,11 +8966,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jake/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -10291,15 +10460,15 @@ } }, "node_modules/jest-watch-typeahead/node_modules/@jest/console": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.0.2.tgz", - "integrity": "sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.0.tgz", + "integrity": "sha512-tscn3dlJFGay47kb4qVruQg/XWlmvU0xp3EJOjzzY+sBaI+YgwKcvAmTcyYU7xEiLLIY5HCdWRooAL8dqkFlDA==", "dependencies": { - "@jest/types": "^28.0.2", + "@jest/types": "^28.1.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2", + "jest-message-util": "^28.1.0", + "jest-util": "^28.1.0", "slash": "^3.0.0" }, "engines": { @@ -10315,12 +10484,12 @@ } }, "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.0.2.tgz", - "integrity": "sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.0.tgz", + "integrity": "sha512-sBBFIyoPzrZho3N+80P35A5oAkSKlGfsEFfXFWuPGBsW40UAjCkGakZhn4UQK4iQlW2vgCDMRDOob9FGKV8YoQ==", "dependencies": { - "@jest/console": "^28.0.2", - "@jest/types": "^28.0.2", + "@jest/console": "^28.1.0", + "@jest/types": "^28.1.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -10329,9 +10498,9 @@ } }, "node_modules/jest-watch-typeahead/node_modules/@jest/types": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.0.2.tgz", - "integrity": "sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.0.tgz", + "integrity": "sha512-xmEggMPr317MIOjjDoZ4ejCSr9Lpbt/u34+dvc99t7DS8YirW5rwZEhzKPC2BMUFkUhI48qs6qLUSGw5FuL0GA==", "dependencies": { "@jest/schemas": "^28.0.2", "@types/istanbul-lib-coverage": "^2.0.0", @@ -10417,17 +10586,17 @@ } }, "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.0.2.tgz", - "integrity": "sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.0.tgz", + "integrity": "sha512-RpA8mpaJ/B2HphDMiDlrAZdDytkmwFqgjDZovM21F35lHGeUeCvYmm6W+sbQ0ydaLpg5bFAUuWG1cjqOl8vqrw==", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.0.2", + "@jest/types": "^28.1.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^28.0.2", + "pretty-format": "^28.1.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -10452,11 +10621,11 @@ } }, "node_modules/jest-watch-typeahead/node_modules/jest-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.0.2.tgz", - "integrity": "sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.0.tgz", + "integrity": "sha512-qYdCKD77k4Hwkose2YBEqQk7PzUf/NSE+rutzceduFveQREeH6b+89Dc9+wjX9dAwHcgdx4yedGA3FQlU/qCTA==", "dependencies": { - "@jest/types": "^28.0.2", + "@jest/types": "^28.1.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -10468,17 +10637,17 @@ } }, "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.0.2.tgz", - "integrity": "sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.0.tgz", + "integrity": "sha512-tNHMtfLE8Njcr2IRS+5rXYA4BhU90gAOwI9frTGOqd+jX0P/Au/JfRSNqsf5nUTcWdbVYuLxS1KjnzILSoR5hA==", "dependencies": { - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", + "@jest/test-result": "^28.1.0", + "@jest/types": "^28.1.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.10.2", - "jest-util": "^28.0.2", + "jest-util": "^28.1.0", "string-length": "^4.0.1" }, "engines": { @@ -10509,9 +10678,9 @@ } }, "node_modules/jest-watch-typeahead/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.0.tgz", + "integrity": "sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q==", "dependencies": { "@jest/schemas": "^28.0.2", "ansi-regex": "^5.0.1", @@ -10853,9 +11022,9 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", + "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==", "dependencies": { "array-includes": "^3.1.4", "object.assign": "^4.1.2" @@ -11300,9 +11469,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11504,12 +11673,12 @@ } }, "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11913,27 +12082,6 @@ "node": ">=4" } }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/postcss": { "version": "8.4.13", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", @@ -12786,9 +12934,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.4.tgz", - "integrity": "sha512-MqzSEx/QsvOk562iV9mLTgIvLFEOq1os9QBQfkgnq8TW6yKhVFPGh0gdXSK5ZlmjuNQEga6/x833e86XZF/lug==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.5.0.tgz", + "integrity": "sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==", "dependencies": { "@csstools/postcss-color-function": "^1.1.0", "@csstools/postcss-font-format-keywords": "^1.0.0", @@ -12798,12 +12946,14 @@ "@csstools/postcss-normalize-display-values": "^1.0.0", "@csstools/postcss-oklab-function": "^1.1.0", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "autoprefixer": "^10.4.5", + "@csstools/postcss-stepped-value-functions": "^1.0.0", + "@csstools/postcss-unset-value": "^1.0.0", + "autoprefixer": "^10.4.6", "browserslist": "^4.20.3", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.5.0", + "cssdb": "^6.6.1", "postcss-attribute-case-insensitive": "^5.0.0", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^4.2.2", @@ -12846,9 +12996,9 @@ } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", - "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.3.tgz", + "integrity": "sha512-I9Yp1VV2r8xFwg/JrnAlPCcKmutv6f6Ig6/CHFPqGJiDgYXM9C+0kgLfK4KOXbKNw+63QYl4agRUB0Wi9ftUIg==", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -13018,6 +13168,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -13419,6 +13584,30 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz", + "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==", + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz", + "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==", + "dependencies": { + "history": "^5.2.0", + "react-router": "6.3.0" + }, + "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", @@ -13515,6 +13704,25 @@ "node": ">=8.10.0" } }, + "node_modules/recoil": { + "version": "0.7.3-alpha.2", + "resolved": "https://registry.npmjs.org/recoil/-/recoil-0.7.3-alpha.2.tgz", + "integrity": "sha512-8LL4T8Bh7WMA5/ka+420PCenaUFie0457kyxX7cy/gsyRlbIGYpyNkAyU0znCvtHTN2clVYkTjGF6zKJ/DzzJg==", + "dependencies": { + "hamt_plus": "1.0.2" + }, + "peerDependencies": { + "react": ">=16.13.1" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -13822,9 +14030,9 @@ } }, "node_modules/rollup": { - "version": "2.71.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.71.1.tgz", - "integrity": "sha512-lMZk3XfUBGjrrZQpvPSoXcZSfKcJ2Bgn+Z0L1MoW2V8Wh7BVM+LOBJTPo16yul2MwL59cXedzW1ruq3rCjSRgw==", + "version": "2.72.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.72.1.tgz", + "integrity": "sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==", "bin": { "rollup": "dist/bin/rollup" }, @@ -14172,6 +14380,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "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", @@ -14461,24 +14674,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14569,6 +14784,44 @@ "webpack": "^5.0.0" } }, + "node_modules/styled-components": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz", + "integrity": "sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==", + "hasInstallScript": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/styled-normalize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/styled-normalize/-/styled-normalize-8.0.7.tgz", + "integrity": "sha512-qQV4O7B9g7ZUnStCwGde7Dc/mcFF/pz0Ha/LL7+j/r6uopf6kJCmmR7jCPQMCBrDkYiQ4xvw1hUoceVJkdaMuQ==", + "peerDependencies": { + "styled-components": "^4.0.0 || ^5.0.0" + } + }, "node_modules/stylehacks": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", @@ -15131,7 +15384,6 @@ "version": "4.6.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15483,9 +15735,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", - "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -15507,7 +15759,6 @@ "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", - "portfinder": "^1.0.28", "rimraf": "^3.0.2", "schema-utils": "^4.0.0", "selfsigned": "^2.0.1", @@ -15582,9 +15833,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "engines": { "node": ">=10.0.0" }, @@ -17516,19 +17767,56 @@ "postcss-value-parser": "^4.2.0" } }, + "@csstools/postcss-stepped-value-functions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.0.tgz", + "integrity": "sha512-q8c4bs1GumAiRenmFjASBcWSLKrbzHzWl6C2HcaAxAXIiL2rUlUWbqQZUjwVG5tied0rld19j/Mm90K3qI26vw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.0.tgz", + "integrity": "sha512-T5ZyNSw9G0x0UDFiXV40a7VjKw2b+l4G+S0sctKqxhx8cg9QtMUAGwJBVU9mHPDPoZEmwm0tEoukjl4zb9MU7Q==", + "requires": {} + }, + "@emotion/is-prop-valid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz", + "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==", + "requires": { + "@emotion/memoize": "^0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@eslint/eslintrc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", - "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", + "espree": "^9.3.2", "globals": "^13.9.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { @@ -17538,9 +17826,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", + "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", "requires": { "type-fest": "^0.20.2" } @@ -18072,24 +18360,24 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", - "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz", + "integrity": "sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==", "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -18465,9 +18753,9 @@ } }, "@testing-library/react": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.1.1.tgz", - "integrity": "sha512-8mirlAa0OKaUvnqnZF6MdAh2tReYA2KtWVw1PKvaF5EcCZqgK5pl8iF+3uW90JdG5Ua2c2c2E2wtLdaug3dsVg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.2.0.tgz", + "integrity": "sha512-Bprbz/SZVONCJy5f7hcihNCv313IJXdYiv0nSJklIs1SQCIHHNlnGNkosSXnGZTmesyGIcBGNppYhXcc11pb7g==", "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.5.0", @@ -18620,15 +18908,24 @@ "@types/node": "*" } }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "requires": { "@types/node": "*" } @@ -18655,9 +18952,9 @@ } }, "@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", "requires": { "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" @@ -18679,9 +18976,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { - "version": "17.0.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.30.tgz", - "integrity": "sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw==" + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" }, "@types/parse-json": { "version": "4.0.0", @@ -18714,9 +19011,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "18.0.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.8.tgz", - "integrity": "sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -18724,9 +19021,9 @@ } }, "@types/react-dom": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.3.tgz", - "integrity": "sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ==", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.4.tgz", + "integrity": "sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==", "requires": { "@types/react": "*" } @@ -18779,6 +19076,16 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" }, + "@types/styled-components": { + "version": "5.1.25", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.25.tgz", + "integrity": "sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ==", + "requires": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, "@types/testing-library__jest-dom": { "version": "5.14.3", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", @@ -18814,13 +19121,13 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.21.0.tgz", - "integrity": "sha512-fTU85q8v5ZLpoZEyn/u1S2qrFOhi33Edo2CZ0+q1gDaWWm0JuPh3bgOyU8lM0edIEYgKLDkPFiZX2MOupgjlyg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz", + "integrity": "sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==", "requires": { - "@typescript-eslint/scope-manager": "5.21.0", - "@typescript-eslint/type-utils": "5.21.0", - "@typescript-eslint/utils": "5.21.0", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/type-utils": "5.22.0", + "@typescript-eslint/utils": "5.22.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -18830,55 +19137,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.21.0.tgz", - "integrity": "sha512-mzF6ert/6iQoESV0z9v5/mEaJRKL4fv68rHoZ6exM38xjxkw4MNx54B7ferrnMTM/GIRKLDaJ3JPRi+Dxa5Hlg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.22.0.tgz", + "integrity": "sha512-rKxoCUtAHwEH6IcAoVpqipY6Th+YKW7WFspAKu0IFdbdKZpveFBeqxxE9Xn+GWikhq1o03V3VXbxIe+GdhggiQ==", "requires": { - "@typescript-eslint/utils": "5.21.0" + "@typescript-eslint/utils": "5.22.0" } }, "@typescript-eslint/parser": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.21.0.tgz", - "integrity": "sha512-8RUwTO77hstXUr3pZoWZbRQUxXcSXafZ8/5gpnQCfXvgmP9gpNlRGlWzvfbEQ14TLjmtU8eGnONkff8U2ui2Eg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", + "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", "requires": { - "@typescript-eslint/scope-manager": "5.21.0", - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/typescript-estree": "5.21.0", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.21.0.tgz", - "integrity": "sha512-XTX0g0IhvzcH/e3393SvjRCfYQxgxtYzL3UREteUneo72EFlt7UNoiYnikUtmGVobTbhUDByhJ4xRBNe+34kOQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", + "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", "requires": { - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/visitor-keys": "5.21.0" + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0" } }, "@typescript-eslint/type-utils": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.21.0.tgz", - "integrity": "sha512-MxmLZj0tkGlkcZCSE17ORaHl8Th3JQwBzyXL/uvC6sNmu128LsgjTX0NIzy+wdH2J7Pd02GN8FaoudJntFvSOw==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz", + "integrity": "sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==", "requires": { - "@typescript-eslint/utils": "5.21.0", + "@typescript-eslint/utils": "5.22.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.21.0.tgz", - "integrity": "sha512-XnOOo5Wc2cBlq8Lh5WNvAgHzpjnEzxn4CJBwGkcau7b/tZ556qrWXQz4DJyChYg8JZAD06kczrdgFPpEQZfDsA==" + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", + "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==" }, "@typescript-eslint/typescript-estree": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.21.0.tgz", - "integrity": "sha512-Y8Y2T2FNvm08qlcoSMoNchh9y2Uj3QmjtwNMdRQkcFG7Muz//wfJBGBxh8R7HAGQFpgYpdHqUpEoPQk+q9Kjfg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", + "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", "requires": { - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/visitor-keys": "5.21.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -18887,14 +19194,14 @@ } }, "@typescript-eslint/utils": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.21.0.tgz", - "integrity": "sha512-q/emogbND9wry7zxy7VYri+7ydawo2HDZhRZ5k6yggIvXa7PvBbAAZ4PFH/oZLem72ezC4Pr63rJvDK/sTlL8Q==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz", + "integrity": "sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==", "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.21.0", - "@typescript-eslint/types": "5.21.0", - "@typescript-eslint/typescript-estree": "5.21.0", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -18916,11 +19223,11 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.21.0.tgz", - "integrity": "sha512-SX8jNN+iHqAF0riZQMkm7e8+POXa/fXw5cxL+gjpyP+FI+JVNhii53EmQgDAfDcBpFekYSlO0fGytMQwRiMQCA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", + "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", "requires": { - "@typescript-eslint/types": "5.21.0", + "@typescript-eslint/types": "5.22.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -19262,13 +19569,13 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" } @@ -19311,12 +19618,9 @@ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" }, "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, "asynckit": { "version": "0.4.0", @@ -19334,12 +19638,12 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.5.tgz", - "integrity": "sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw==", + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", "requires": { - "browserslist": "^4.20.2", - "caniuse-lite": "^1.0.30001332", + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -19520,6 +19824,23 @@ "@babel/helper-define-polyfill-provider": "^0.3.1" } }, + "babel-plugin-styled-components": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", + "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11", + "picomatch": "^2.3.0" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, "babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", @@ -19765,6 +20086,11 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -19777,9 +20103,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001334", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz", - "integrity": "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==" + "version": "1.0.30001338", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz", + "integrity": "sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==" }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", @@ -20038,14 +20364,14 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "core-js": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.3.tgz", - "integrity": "sha512-1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg==" + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.4.tgz", + "integrity": "sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==" }, "core-js-compat": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.3.tgz", - "integrity": "sha512-wliMbvPI2idgFWpFe7UEyHMvu6HWgW8WA+HnDRtgzoSDYvXFMpoGX1H3tPDDXrcfUSyXafCLDd7hOeMQHEZxGw==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.4.tgz", + "integrity": "sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA==", "requires": { "browserslist": "^4.20.3", "semver": "7.0.0" @@ -20059,9 +20385,9 @@ } }, "core-js-pure": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.3.tgz", - "integrity": "sha512-oN88zz7nmKROMy8GOjs+LN+0LedIvbMdnB5XsTlhcOg1WGARt9l0LFg0zohdoFmCsEZ1h2ZbSQ6azj3M+vhzwQ==" + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.4.tgz", + "integrity": "sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw==" }, "core-util-is": { "version": "1.0.3", @@ -20120,6 +20446,11 @@ "postcss-selector-parser": "^6.0.9" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-declaration-sorter": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", @@ -20227,6 +20558,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -20254,9 +20595,9 @@ "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" }, "cssdb": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", - "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==" + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.1.tgz", + "integrity": "sha512-0/nZEYfp8SFEzJkMud8NxZJsGfD7RHDJti6GRBLZptIwAzco6RTx1KgwFl4mGWsYS0ZNbCrsY9QryhQ4ldF3Mg==" }, "cssesc": { "version": "3.0.0", @@ -20646,9 +20987,9 @@ } }, "electron-to-chromium": { - "version": "1.4.129", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz", - "integrity": "sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==" + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" }, "emittery": { "version": "0.8.1", @@ -20701,16 +21042,18 @@ } }, "es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz", + "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.1", "get-symbol-description": "^1.0.0", "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", @@ -20722,9 +21065,10 @@ "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "regexp.prototype.flags": "^1.4.1", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" } }, "es-module-lexer": { @@ -20821,11 +21165,11 @@ } }, "eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", - "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", "requires": { - "@eslint/eslintrc": "^1.2.2", + "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -20836,7 +21180,7 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -20852,7 +21196,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -20903,9 +21247,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz", + "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==", "requires": { "type-fest": "^0.20.2" } @@ -21171,9 +21515,9 @@ "requires": {} }, "eslint-plugin-testing-library": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.3.1.tgz", - "integrity": "sha512-OfF4dlG/q6ck6DL3P8Z0FPdK0dU5K57gsBu7eUcaVbwYKaNzjgejnXiM9CCUevppORkvfek+9D3Uj/9ZZ8Vz8g==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.4.0.tgz", + "integrity": "sha512-XjxIf4g33KaZXxRNbR33+0WcRQ/zt8N0R58IY6/kkHnrY6zPsC1gs3u5cTZr5eUmCZN/sjoPak3uF5vHGKg2wg==", "requires": { "@typescript-eslint/utils": "^5.13.0" } @@ -21220,12 +21564,12 @@ } }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -21555,9 +21899,9 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" }, "fork-ts-checker-webpack-plugin": { "version": "6.5.2", @@ -21718,6 +22062,17 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -21857,6 +22212,11 @@ "duplexer": "^0.1.2" } }, + "hamt_plus": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz", + "integrity": "sha1-4hwlKWjH4zsg9qGwlM2FeHomVgE=" + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -21911,6 +22271,29 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + }, + "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==", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "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==" + } + } + }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -22470,11 +22853,6 @@ "color-convert": "^2.0.1" } }, - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -23564,15 +23942,15 @@ }, "dependencies": { "@jest/console": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.0.2.tgz", - "integrity": "sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.0.tgz", + "integrity": "sha512-tscn3dlJFGay47kb4qVruQg/XWlmvU0xp3EJOjzzY+sBaI+YgwKcvAmTcyYU7xEiLLIY5HCdWRooAL8dqkFlDA==", "requires": { - "@jest/types": "^28.0.2", + "@jest/types": "^28.1.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2", + "jest-message-util": "^28.1.0", + "jest-util": "^28.1.0", "slash": "^3.0.0" }, "dependencies": { @@ -23584,20 +23962,20 @@ } }, "@jest/test-result": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.0.2.tgz", - "integrity": "sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.0.tgz", + "integrity": "sha512-sBBFIyoPzrZho3N+80P35A5oAkSKlGfsEFfXFWuPGBsW40UAjCkGakZhn4UQK4iQlW2vgCDMRDOob9FGKV8YoQ==", "requires": { - "@jest/console": "^28.0.2", - "@jest/types": "^28.0.2", + "@jest/console": "^28.1.0", + "@jest/types": "^28.1.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/types": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.0.2.tgz", - "integrity": "sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.0.tgz", + "integrity": "sha512-xmEggMPr317MIOjjDoZ4ejCSr9Lpbt/u34+dvc99t7DS8YirW5rwZEhzKPC2BMUFkUhI48qs6qLUSGw5FuL0GA==", "requires": { "@jest/schemas": "^28.0.2", "@types/istanbul-lib-coverage": "^2.0.0", @@ -23656,17 +24034,17 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "jest-message-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.0.2.tgz", - "integrity": "sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.0.tgz", + "integrity": "sha512-RpA8mpaJ/B2HphDMiDlrAZdDytkmwFqgjDZovM21F35lHGeUeCvYmm6W+sbQ0ydaLpg5bFAUuWG1cjqOl8vqrw==", "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.0.2", + "@jest/types": "^28.1.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^28.0.2", + "pretty-format": "^28.1.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -23684,11 +24062,11 @@ "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" }, "jest-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.0.2.tgz", - "integrity": "sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.0.tgz", + "integrity": "sha512-qYdCKD77k4Hwkose2YBEqQk7PzUf/NSE+rutzceduFveQREeH6b+89Dc9+wjX9dAwHcgdx4yedGA3FQlU/qCTA==", "requires": { - "@jest/types": "^28.0.2", + "@jest/types": "^28.1.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -23697,17 +24075,17 @@ } }, "jest-watcher": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.0.2.tgz", - "integrity": "sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.0.tgz", + "integrity": "sha512-tNHMtfLE8Njcr2IRS+5rXYA4BhU90gAOwI9frTGOqd+jX0P/Au/JfRSNqsf5nUTcWdbVYuLxS1KjnzILSoR5hA==", "requires": { - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", + "@jest/test-result": "^28.1.0", + "@jest/types": "^28.1.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.10.2", - "jest-util": "^28.0.2", + "jest-util": "^28.1.0", "string-length": "^4.0.1" }, "dependencies": { @@ -23731,9 +24109,9 @@ } }, "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.0.tgz", + "integrity": "sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q==", "requires": { "@jest/schemas": "^28.0.2", "ansi-regex": "^5.0.1", @@ -23981,9 +24359,9 @@ "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==" }, "jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", + "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==", "requires": { "array-includes": "^3.1.4", "object.assign": "^4.1.2" @@ -24315,9 +24693,9 @@ } }, "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" }, "natural-compare": { "version": "1.4.0", @@ -24456,12 +24834,12 @@ } }, "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "object.values": { @@ -24749,26 +25127,6 @@ } } }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, "postcss": { "version": "8.4.13", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", @@ -25241,9 +25599,9 @@ } }, "postcss-preset-env": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.4.tgz", - "integrity": "sha512-MqzSEx/QsvOk562iV9mLTgIvLFEOq1os9QBQfkgnq8TW6yKhVFPGh0gdXSK5ZlmjuNQEga6/x833e86XZF/lug==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.5.0.tgz", + "integrity": "sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==", "requires": { "@csstools/postcss-color-function": "^1.1.0", "@csstools/postcss-font-format-keywords": "^1.0.0", @@ -25253,12 +25611,14 @@ "@csstools/postcss-normalize-display-values": "^1.0.0", "@csstools/postcss-oklab-function": "^1.1.0", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "autoprefixer": "^10.4.5", + "@csstools/postcss-stepped-value-functions": "^1.0.0", + "@csstools/postcss-unset-value": "^1.0.0", + "autoprefixer": "^10.4.6", "browserslist": "^4.20.3", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.5.0", + "cssdb": "^6.6.1", "postcss-attribute-case-insensitive": "^5.0.0", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^4.2.2", @@ -25291,9 +25651,9 @@ } }, "postcss-pseudo-class-any-link": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", - "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.3.tgz", + "integrity": "sha512-I9Yp1VV2r8xFwg/JrnAlPCcKmutv6f6Ig6/CHFPqGJiDgYXM9C+0kgLfK4KOXbKNw+63QYl4agRUB0Wi9ftUIg==", "requires": { "postcss-selector-parser": "^6.0.10" } @@ -25405,6 +25765,12 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -25702,6 +26068,23 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, + "react-router": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz", + "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==", + "requires": { + "history": "^5.2.0" + } + }, + "react-router-dom": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz", + "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==", + "requires": { + "history": "^5.2.0", + "react-router": "6.3.0" + } + }, "react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -25775,6 +26158,14 @@ "picomatch": "^2.2.1" } }, + "recoil": { + "version": "0.7.3-alpha.2", + "resolved": "https://registry.npmjs.org/recoil/-/recoil-0.7.3-alpha.2.tgz", + "integrity": "sha512-8LL4T8Bh7WMA5/ka+420PCenaUFie0457kyxX7cy/gsyRlbIGYpyNkAyU0znCvtHTN2clVYkTjGF6zKJ/DzzJg==", + "requires": { + "hamt_plus": "1.0.2" + } + }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -25993,9 +26384,9 @@ } }, "rollup": { - "version": "2.71.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.71.1.tgz", - "integrity": "sha512-lMZk3XfUBGjrrZQpvPSoXcZSfKcJ2Bgn+Z0L1MoW2V8Wh7BVM+LOBJTPo16yul2MwL59cXedzW1ruq3rCjSRgw==", + "version": "2.72.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.72.1.tgz", + "integrity": "sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==", "requires": { "fsevents": "~2.3.2" } @@ -26254,6 +26645,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -26484,21 +26880,23 @@ } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "stringify-object": { @@ -26553,6 +26951,29 @@ "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "requires": {} }, + "styled-components": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz", + "integrity": "sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, + "styled-normalize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/styled-normalize/-/styled-normalize-8.0.7.tgz", + "integrity": "sha512-qQV4O7B9g7ZUnStCwGde7Dc/mcFF/pz0Ha/LL7+j/r6uopf6kJCmmR7jCPQMCBrDkYiQ4xvw1hUoceVJkdaMuQ==", + "requires": {} + }, "stylehacks": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", @@ -26982,8 +27403,7 @@ "typescript": { "version": "4.6.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", - "peer": true + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" }, "unbox-primitive": { "version": "1.0.2", @@ -27255,9 +27675,9 @@ } }, "webpack-dev-server": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", - "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", "requires": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -27279,7 +27699,6 @@ "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", - "portfinder": "^1.0.28", "rimraf": "^3.0.2", "schema-utils": "^4.0.0", "selfsigned": "^2.0.1", @@ -27326,9 +27745,9 @@ } }, "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "requires": {} } } diff --git a/package.json b/package.json index 7f031bc..c7a9e28 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,24 @@ { - "name": "react-messenger-15th", + "name": "front", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^13.1.1", + "@testing-library/react": "^13.2.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.1", + "@types/node": "^17.0.33", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.4", + "@types/styled-components": "^5.1.25", "react": "^18.1.0", "react-dom": "^18.1.0", + "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", + "recoil": "^0.7.3-alpha.2", + "styled-components": "^5.3.5", + "styled-normalize": "^8.0.7", + "typescript": "^4.6.4", "web-vitals": "^2.1.4" }, "scripts": { @@ -34,5 +44,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "prettier": "^2.6.2" } } diff --git a/public/calendar.png b/public/calendar.png new file mode 100644 index 0000000..e584969 Binary files /dev/null and b/public/calendar.png differ diff --git a/public/chat.png b/public/chat.png new file mode 100644 index 0000000..174cdd0 Binary files /dev/null and b/public/chat.png differ diff --git a/public/chat_black.png b/public/chat_black.png new file mode 100644 index 0000000..054c4d3 Binary files /dev/null and b/public/chat_black.png differ diff --git a/public/fix.png b/public/fix.png new file mode 100644 index 0000000..fbd080b Binary files /dev/null and b/public/fix.png differ diff --git a/public/giftbox.png b/public/giftbox.png new file mode 100644 index 0000000..16e7224 Binary files /dev/null and b/public/giftbox.png differ diff --git a/public/glass.png b/public/glass.png new file mode 100644 index 0000000..5d933b7 Binary files /dev/null and b/public/glass.png differ diff --git a/public/home.png b/public/home.png new file mode 100644 index 0000000..95eae8b Binary files /dev/null and b/public/home.png differ diff --git a/public/home_black.png b/public/home_black.png new file mode 100644 index 0000000..ae9eec2 Binary files /dev/null and b/public/home_black.png differ diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000..70b5f62 Binary files /dev/null and b/public/icon.png differ diff --git a/public/index.html b/public/index.html index a0b8d37..dbe8288 100644 --- a/public/index.html +++ b/public/index.html @@ -10,8 +10,13 @@ content="Web site created using create-react-app" /> + - React App + + siwonblue
diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100644 index fc44b0a..0000000 Binary files a/public/logo192.png and /dev/null differ diff --git a/public/logo512.png b/public/logo512.png deleted file mode 100644 index a4e47a6..0000000 Binary files a/public/logo512.png and /dev/null differ diff --git a/public/settings.png b/public/settings.png new file mode 100644 index 0000000..f31d364 Binary files /dev/null and b/public/settings.png differ diff --git a/public/settings_black.png b/public/settings_black.png new file mode 100644 index 0000000..647bbaf Binary files /dev/null and b/public/settings_black.png differ diff --git a/public/shopping.png b/public/shopping.png new file mode 100644 index 0000000..97d38f1 Binary files /dev/null and b/public/shopping.png differ diff --git a/public/speech-bubble.png b/public/speech-bubble.png new file mode 100644 index 0000000..9854a3e Binary files /dev/null and b/public/speech-bubble.png differ diff --git a/public/user.png b/public/user.png new file mode 100644 index 0000000..7bb798d Binary files /dev/null and b/public/user.png differ diff --git a/public/wallet.png b/public/wallet.png new file mode 100644 index 0000000..b6a8905 Binary files /dev/null and b/public/wallet.png differ diff --git a/src/App.js b/src/App.js deleted file mode 100644 index 772afaf..0000000 --- a/src/App.js +++ /dev/null @@ -1,5 +0,0 @@ -function App() { - return
15๊ธฐ ํŒŒ์ดํŒ… ๐Ÿ’–
; -} - -export default App; diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..eafde47 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,19 @@ +import { BrowserRouter, Route, Routes } from 'react-router-dom'; +import Home from './pages/Home'; +import Rooms from './pages/Rooms'; +import General from './pages/General'; + + +function App() { + return ( + + + } /> + } /> + } /> + + + ); +} + +export default App; diff --git a/src/components/ChatModal.tsx b/src/components/ChatModal.tsx new file mode 100644 index 0000000..af841e6 --- /dev/null +++ b/src/components/ChatModal.tsx @@ -0,0 +1,32 @@ +import styled from 'styled-components'; +import { useRecoilState } from 'recoil'; +import { chatModalToggleState } from '../store/recoil'; + +function ChatModal() { + const [chatModalToggle, setChatModalToggle] = + useRecoilState(chatModalToggleState); + const onToggleChatModal = () => setChatModalToggle((prev) => !prev); + return ( + +
+
์ผ๋ฐ˜์ฑ„ํŒ…
+
์˜คํ”ˆ์ฑ„ํŒ…
+
+ โŒ +
+ ); +} + +const Container = styled.div` + position: absolute; + right: 10px; + padding: 10px; + width: 70px; + height: 50px; + color: #e7e7e7; + background-color: #302f30; +`; + +const Btn = styled.button``; + +export default ChatModal; diff --git a/src/components/ChatRoom.tsx b/src/components/ChatRoom.tsx new file mode 100644 index 0000000..5120fda --- /dev/null +++ b/src/components/ChatRoom.tsx @@ -0,0 +1,242 @@ +import styled from 'styled-components'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import {IMsgs} from '../interfaces/data'; +import { useRecoilState } from 'recoil'; +import { chatRoomToggleState, userClicked } from '../store/recoil'; +import { Message, userInfo } from '../store/recoil/data'; +import MessageBox from './MessageBox'; + +function ChatRoom() { + const [text, setText] = useState(''); + const [prevUser, setPrevUser] = useState(''); + const [roomId, setRoomId] = useState(0); + const scrollRef = useRef(null); + const onChangeTextArea = + (e: React.ChangeEvent):void => { + setText(e.target.value); + } + + const [chatRoomToggle, setChatRoomToggle] = + useRecoilState(chatRoomToggleState); + const [currentUser, setCurrentUser] = useRecoilState(userClicked); + const [chat, setChat] = useRecoilState(Message); + const ToggleChatRoom = useCallback(() => { + setChatRoomToggle((prev) => !prev); + }, []); + const scrollToBottom = () => { + if (scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + } + }; + + const [user, setUser] = useRecoilState(userInfo); + + const [url, setUrl] = useState(''); + const toggleImg = () => { + const [url] = user.filter((u) => u.userName === currentUser); + setUrl(url.profileImg); + }; + useEffect(() => { + toggleImg(); + }, [currentUser]); + + const pickUser = (name:string| undefined): ( number | undefined) => { + switch (name) { + case '์นจ์ฐฉ๋งจbde': + return 0; + case '์ฃผํ˜ธ๋ฏผqwt': + return 1; + case '๊น€ํ’zxcv': + return 2; + case 'ํƒœ์™„์”จliup': + return 3; + case '์Šˆ๋ง์ฝ”qwejrl': + return 4; + default: + return 0; + } + }; + useEffect(() => { + // @ts-ignore + setRoomId(pickUser(currentUser)); + }, []); + const onClickImage = () => { + if (currentUser !== '์ „์‹œ์›') { + setPrevUser(currentUser); + setCurrentUser('์ „์‹œ์›'); + } else { + setCurrentUser(prevUser); + } + }; + + // when press 'enter', then submit form + // when press 'shift+enter', then change line + const onKeyUp = (e:React.KeyboardEvent) => { + if (e.keyCode === 13) { + if (!e.shiftKey) { + e.preventDefault(); + const date = + String(new Date().getHours()).padStart(2, '0') + + ':' + + String(new Date().getMinutes()).padStart(2, '0'); + if (text === '\n') { + return setText(''); + } + const obj = { + userName: currentUser, + contents: text, + date, + }; + + const [room] = chat.filter((room) => room.roomId === roomId); + const newRoom = { ...room, msgs: [...room.msgs, obj] }; + + // @ts-ignore + setChat(chat.map(( room) => (room.roomId === roomId ? newRoom : room))); + + setText(''); + } + } + }; + useEffect(() => { + scrollToBottom(); + }, [chat]); + + // @ts-ignore + // @ts-ignore + // @ts-ignore + // @ts-ignore + return ( + + + + X + + + + + + + + + {chat[roomId]?.msgs.map(( m : IMsgs , i:number) => { + return ; + })} + + + + + + ์ „์†ก + + + + ); +} + +const Container = styled.div` + position: absolute; + bottom: 50px; + left: 75px; + width: 300px; + height: 350px; + background: gray; + display: grid; + grid-template-rows: 70px 210px 70px; + border-radius: 10px; +`; + +const ChatRoomHeader = styled.div` + background: #2e2e2e; + border-top-right-radius: 10px; + border-top-left-radius: 10px; +`; +const Btn = styled.button` + background: #2d2d2d; + border: 1px solid #373737; + color: #6b6b6b; + border-radius: 5px; +`; + +const UserImg = styled.div` + display: flex; + justify-content: center; +`; +const Img = styled.img` + width: 40px; + height: 40px; + border-radius: 50%; +`; + +const ChatContents = styled.div` + overflow: scroll; + height: 100%; + padding: 5px; + background: #191919; +`; +const ChatForm = styled.form` + display: grid; + grid-template-columns: 7fr 3fr; + height: 100%; +`; +const ChatTextArea = styled.textarea` + width: 100%; + background: #262626; + border: none; + color: white; + resize: none; + &:focus { + outline: none; + } +`; + +const FormWrapper = styled.div` + padding: 5px; + background: #262626; + border: 1px solid #404040; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; +`; + +const CircleWrapper = styled.div` + display: flex; + padding: 5px; +`; + +export const Cir1 = styled.div` + cursor: pointer; + width: 15px; + height: 15px; + background: indianred; + border: 1px solid indianred; + border-radius: 50%; + margin-right: 5px; + color: black; + font-size: 10px; + text-align: center; +`; + +export const Cir2 = styled.div` + width: 15px; + height: 15px; + background: yellow; + border: 1px solid yellow; + border-radius: 50%; + margin-right: 5px; +`; + +export const Cir3 = styled.div` + width: 15px; + height: 15px; + background: green; + border: 1px solid green; + border-radius: 50%; + margin-right: 5px; +`; + +export default ChatRoom; diff --git a/src/components/Header2.tsx b/src/components/Header2.tsx new file mode 100644 index 0000000..6e32b47 --- /dev/null +++ b/src/components/Header2.tsx @@ -0,0 +1,101 @@ +import styled from 'styled-components'; +import { useLocation } from 'react-router-dom'; +import { useEffect, useState } from 'react'; +import { useRecoilState } from 'recoil'; +import { + chatModalToggleState, + searchToggleState, + pathInfo, +} from '../store/recoil'; +function Header() { + const [urlPath, setUrlPath] = useRecoilState(pathInfo); + const [searchToggle, setSearchToggle] = useRecoilState(searchToggleState); + + const [chatModalToggle, setChatModalToggle] = + useRecoilState(chatModalToggleState); + + const onToggleSearch = () => setSearchToggle((prev) => !prev); + + const onToggleChatModal = () => setChatModalToggle((prev) => !prev); + const location = useLocation(); + + useEffect(() => { + setUrlPath(location.pathname.slice(1)); + }, [location]); + return ( + + + {urlPath === '' &&
์นœ๊ตฌ
} + {urlPath === 'rooms' &&
์ฑ„ํŒ…
} + {urlPath === 'general' &&
๋”๋ณด๊ธฐ
} +
+ + {urlPath === '' && ( + + + + )} + {urlPath === 'rooms' && ( + + + + )} + {urlPath === 'general' && null} + +
+ ); +} +const IconWrapper = styled.div` + display: flex; + + padding: 5px; +`; + +const Glass = styled.img` + width: 30px; + height: 30px; + margin-right: 15px; + cursor: pointer; + color: white; + &:hover { + background: antiquewhite; + border-radius: 50%; + padding: 5px; + } +`; +const Speech = styled.img` + width: 30px; + height: 30px; + cursor: pointer; + &:hover { + background: antiquewhite; + border-radius: 50%; + padding: 5px; + } +`; + +const RigthContents = styled.div` + display: flex; +`; +const LeftContents = styled.div` + display: flex; +`; + +const Div = styled.div` + color: white; + font-weight: 800; + font-size: 20px; + padding: 5px 0 0 15px; +`; + +const Container = styled.div` + display: flex; + width: 100%; + height: 40px; + justify-content: space-between; + border-bottom: 2px solid #404040; + background: #262626; + border-top-right-radius: 10px; +`; + +export default Header; diff --git a/src/components/Main.tsx b/src/components/Main.tsx new file mode 100644 index 0000000..52984f5 --- /dev/null +++ b/src/components/Main.tsx @@ -0,0 +1,23 @@ +import styled from 'styled-components'; +import {FC} from 'react'; + +type Props = { + children: React.ReactNode; +}; + +const Main:FC = ({ children }) => { + return {children}; +} + +const Container = styled.div` + display: flex; + flex-direction: column; + align-items: center; + overflow: scroll; + height: 505px; + padding: 50px 15px; + background: #262626; + border-bottom-right-radius: 12px; +`; + +export default Main; diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx new file mode 100644 index 0000000..b9db958 --- /dev/null +++ b/src/components/MessageBox.tsx @@ -0,0 +1,106 @@ +import styled, { css } from 'styled-components'; + +import { Message, userInfo } from '../store/recoil/data'; +import { useRecoilState } from 'recoil'; +import { userClicked } from '../store/recoil'; +import { useEffect, useState } from 'react'; +import { IMsgs } from '../interfaces/data'; + +// @ts-ignore +function MessageBox({ message }) { + const [user, setUser] = useRecoilState(userInfo); + const [currentUser, setCurrentUser] = useRecoilState(userClicked); + const [source, setSource] = useState([]); + + const findUrl = () => { + const [a] = user.filter((u) => u.userName === currentUser); + const [b] = user.filter((u) => u.userName === '์ „์‹œ์›'); + const source = [b.profileImg, a.profileImg]; + // @ts-ignore + setSource([...source]); + }; + useEffect(() => { + findUrl(); + }, []); + + return ( + + {message.userName === '์ „์‹œ์›' ? ( + + {message.date} +
+ {message.userName} + {message.contents} +
+ +
+ ) : ( + <> + +
+ {message.userName} + {message.contents} +
+ {message.date} + + )} +
+ ); +} + +const Container = styled.div` + display: flex; + + margin-bottom: 15px; +`; + +const RightWrapper = styled.div` + display: flex; + justify-content: flex-end; + width: 100%; +`; + +const NameWrapper = styled.div<{ me?: boolean }>` + color: #a0a0a0; + margin-bottom: 5px; + + text-align: ${(props) => props.me && 'right'}; +`; +const MsgWrapper = styled.div` + color: white; + background: #383838; + padding: 8px; + border-radius: 5px; +`; +const TimeWrapper = styled.div<{ me?: boolean }>` + color: #a0a0a0; + font-size: 8px; + + display: flex; + align-items: flex-end; + + ${({ me }) => + me + ? css` + margin-right: 5px; + ` + : css` + margin-left: 5px; + `} +`; + +const Img = styled.img<{ me?: boolean }>` + width: 30px; + height: 30px; + border-radius: 50%; + ${({ me }) => + me + ? css` + margin-left: 5px; + ` + : css` + margin-right: 5px; + `} +`; + +export default MessageBox; diff --git a/src/components/Search.tsx b/src/components/Search.tsx new file mode 100644 index 0000000..005d982 --- /dev/null +++ b/src/components/Search.tsx @@ -0,0 +1,82 @@ +import React, { useCallback, useEffect, useState } from 'react'; +import { useRecoilState } from 'recoil'; +import { searchToggleState, searchValue } from '../store/recoil'; +import { userInfo } from '../store/recoil/data'; + +import styled from 'styled-components'; +import SearchUserBox from './SearchUserBox'; + +function Search() { + const [text, setText] = useState(''); + const [searchVal, setSearchVal] = useRecoilState(searchValue); + const [user, setUser] = useRecoilState(userInfo); + const onChange = (e : React.ChangeEvent) => { + setText(e.target.value); + }; + const [searchToggle, setSearchToggle] = useRecoilState(searchToggleState); + const onToggleSearch = () => setSearchToggle((prev) => !prev); + const handleSearch = () => { + if (text === '' || text === null) { + setSearchVal(undefined); + } else { + const userNameArray = user.map((u) => u.userName).slice(1); + const result = userNameArray.filter((name) => name.includes(text)); + console.log(result); + const searchedUser = user + .map((u, i) => { + if (result.includes(u.userName)) { + return u; + } + }) + .filter((c) => typeof c !== 'undefined'); + // @ts-ignore + setSearchVal(searchedUser); + } + }; + + useEffect(() => { + handleSearch(); + // if (searchToggle === false) { + // setSearchVal(null); + // } + }, [text]); + + return ( + + + + โŒ + +
+ +
+
+ ); +} +const InputWrapper = styled.div` + padding: 1px; +`; + +const Input = styled.input` + width: 90%; +`; + +const Container = styled.div` + position: absolute; + top: 40px; + right: 10px; + width: 300px; + height: 100px; + background: gray; + overflow: scroll; + border-bottom-right-radius: 10px; + border-bottom-left-radius: 10px; +`; + +const Btn = styled.button` + background: black; + border: none; + margin-left: 1px; +`; + +export default Search; diff --git a/src/components/SearchUserBox.tsx b/src/components/SearchUserBox.tsx new file mode 100644 index 0000000..d7a0b1e --- /dev/null +++ b/src/components/SearchUserBox.tsx @@ -0,0 +1,100 @@ +import styled from 'styled-components'; +import { useRecoilState } from 'recoil'; +import { + chatRoomToggleState, + pathInfo, + searchValue, + userClicked, +} from '../store/recoil'; + +function SearchUserBox() { + const [urlPath, setUrlPath] = useRecoilState(pathInfo); + const [chatRoomToggle, setChatRoomToggle] = + useRecoilState(chatRoomToggleState); + const [searchVal, setSearchVal] = useRecoilState(searchValue); + const [currentUser, setCurrentUser] = useRecoilState(userClicked); + + return ( + <> + {searchVal ? ( + searchVal.map((d, i) => { + return ( + <> + {!d.isMe && ( + { + setChatRoomToggle((prev) => !prev); + setCurrentUser(d.userName); + }} + > + + + + {urlPath === '' && ( + + {d.userName} + {d.introduce} + + )} + {urlPath === 'rooms' && ( + + {d.userName} + {d.last} + + )} + {urlPath === '' &&
{d.profileMusic}
} + {urlPath === 'rooms' &&
} +
+ )} + + ); + }) + ) : ( + +

๊ฒ€์ƒ‰๊ฒฐ๊ณผ ์—†์Œ.

+
+ )} + + ); +} +const NoWrapper = styled.div` + text-align: center; +`; + +const Container = styled.div` + margin-bottom: 25px; + width: 100%; + height: 50px; + display: grid; + grid-template-columns: 1fr 3fr 1fr; + cursor: pointer; +`; + +const ImgDiv = styled.div` + display: flex; + justify-content: center; + align-items: center; + + padding: 0px 3px; +`; +const Img = styled.img` + border-radius: 20px; + width: 48px; + height: 48px; +`; +const Name = styled.div` + color: black; + font-size: 15px; + font-weight: 800; +`; +const Intro = styled.div` + color: black; +`; +const NickDiv = styled.div` + margin-left: 10px; + display: grid; + grid-auto-rows: 1fr 1fr; +`; + +export default SearchUserBox; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx new file mode 100644 index 0000000..30754cb --- /dev/null +++ b/src/components/Sidebar.tsx @@ -0,0 +1,149 @@ +import styled from 'styled-components'; +import { useNavigate, useLocation } from 'react-router-dom'; +import { useRecoilState } from 'recoil'; +import { closeWindow, pathInfo } from '../store/recoil'; +import { useEffect } from 'react'; + +const Sidebar = () => { + let navigate = useNavigate(); + const [urlPath, setUrlPath] = useRecoilState(pathInfo); + const [window, setWindow] = useRecoilState(closeWindow); + let location = useLocation(); + const onCloseWindow = () => { + setWindow((prev) => !prev); + }; + useEffect(() => { + setUrlPath(location.pathname.slice(1)); + }, [location]); + return ( + + + X + + + + + {urlPath === '' && ( + <> + navigate('/')} /> + navigate('/rooms')} /> + navigate('/general')} /> + + )} + {urlPath === 'rooms' && ( + <> + navigate('/')} /> + navigate('/rooms')} /> + navigate('/general')} /> + + )} + {urlPath === 'general' && ( + <> + navigate('/')} /> + navigate('/rooms')} /> + navigate('/general')} + /> + + )} + + + ์•Œ๋ฆผ + ์„ค์ • + + + ); +}; + +const Container = styled.div` + display: grid; + grid-template-rows: 1fr 20fr 2fr; + background: #404040; + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +`; + +const Img = styled.img` + margin-bottom: 15px; + width: 30px; + height: 30px; + cursor: pointer; +`; + +const Alert = styled.div` + &:hover { + color: antiquewhite; + cursor: pointer; + } +`; + +const Setting = styled.div` + &:hover { + color: antiquewhite; + cursor: pointer; + } +`; + +const UtilWrapper = styled.div` + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +`; + +const BtnWrapper = styled.div` + padding: 5px 0 0 5px; + display: flex; + justify-content: space-between; +`; + +const Btn = styled.div` + border: 1px solid red; + border-radius: 50%; +`; + +const MenuContainer = styled.div` + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + padding-top: 40px; +`; +const CircleWrapper = styled.div` + display: flex; + padding: 5px; +`; + +export const Cir1 = styled.div` + cursor: pointer; + width: 15px; + height: 15px; + background: indianred; + border: 1px solid indianred; + border-radius: 50%; + margin-right: 5px; + color: black; + font-size: 10px; + text-align: center; +`; + +export const Cir2 = styled.div` + width: 15px; + height: 15px; + background: yellow; + border: 1px solid yellow; + border-radius: 50%; + margin-right: 5px; +`; + +export const Cir3 = styled.div` + width: 15px; + height: 15px; + background: green; + border: 1px solid green; + border-radius: 50%; + margin-right: 5px; +`; + +export default Sidebar; diff --git a/src/components/Start.tsx b/src/components/Start.tsx new file mode 100644 index 0000000..f95cbbc --- /dev/null +++ b/src/components/Start.tsx @@ -0,0 +1,38 @@ +import { useRecoilState } from 'recoil'; +import { closeWindow } from '../store/recoil'; +import styled from 'styled-components'; + +function Start() { + const [window, setWindow] = useRecoilState(closeWindow); + const handleWindow = () => { + setWindow((prev) => !prev); + }; + return ( + + + ์‹œ์ž‘ํ•˜๊ธฐ + + ); +} +const Wrapper = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + border: 1px solid black; + padding: 5px; + border-radius: 10px; +`; +const Img = styled.img` + width: 50px; + height: 50px; + cursor: pointer; +`; + +const Btn = styled.button` + border: none; + background: none; + cursor: pointer; +`; + +export default Start; diff --git a/src/components/UserBox.tsx b/src/components/UserBox.tsx new file mode 100644 index 0000000..02b66f9 --- /dev/null +++ b/src/components/UserBox.tsx @@ -0,0 +1,93 @@ +import styled from 'styled-components'; +import { useRecoilState } from 'recoil'; +import { + chatRoomToggleState, + pathInfo, + searchValue, + userClicked, +} from '../store/recoil'; +import { userInfo } from '../store/recoil/data'; + +function UserBox() { + const [urlPath, setUrlPath] = useRecoilState(pathInfo); + const [chatRoomToggle, setChatRoomToggle] = + useRecoilState(chatRoomToggleState); + const [user, setUser] = useRecoilState(userInfo); + const [currentUser, setCurrentUser] = useRecoilState(userClicked); + // const [searchVal,setSearchVal] = useRecoilState(searchValue) + + return ( + <> + {user.map((d, i) => { + return ( + <> + {!d.isMe && ( + { + setChatRoomToggle((prev) => !prev); + setCurrentUser(d.userName); + }} + > + + + + {urlPath === '' && ( + + {d.userName} + {d.introduce} + + )} + {urlPath === 'rooms' && ( + + {d.userName} + {d.last} + + )} + {urlPath === '' &&
{d.profileMusic}
} + {urlPath === 'rooms' &&
} +
+ )} + + ); + })} + + ); +} + +const Container = styled.div` + margin-bottom: 25px; + width: 100%; + height: 50px; + display: grid; + grid-template-columns: 1fr 3fr 1fr; + cursor: pointer; +`; + +const ImgDiv = styled.div` + display: flex; + justify-content: center; + align-items: center; + + padding: 0px 3px; +`; +const Img = styled.img` + border-radius: 20px; + width: 48px; + height: 48px; +`; +const Name = styled.div` + color: #d7d7d7; + font-size: 15px; + font-weight: 800; +`; +const Intro = styled.div` + color: #929292; +`; +const NickDiv = styled.div` + margin-left: 10px; + display: grid; + grid-auto-rows: 1fr 1fr; +`; + +export default UserBox; diff --git a/src/index.js b/src/index.tsx similarity index 52% rename from src/index.js rename to src/index.tsx index 593edf1..fce1022 100644 --- a/src/index.js +++ b/src/index.tsx @@ -1,10 +1,15 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; +import { RecoilRoot, useRecoilState } from 'recoil'; import App from './App'; +import GlobalStyle from './styles/GlobalStyle'; -const root = ReactDOM.createRoot(document.getElementById('root')); +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLInputElement); root.render( - + + + + ); diff --git a/src/interfaces/data.tsx b/src/interfaces/data.tsx new file mode 100644 index 0000000..817e8de --- /dev/null +++ b/src/interfaces/data.tsx @@ -0,0 +1,28 @@ +export interface IUser { + userId : number, + userName:string, + profileImg:string, + introduce : string, + profileMusic : string, + isMe : boolean, + last:string +} + +export interface IMessage { + roomId : number, + user : { + userName:string + }[], + msgs:{ + userName:string, + contents:string, + date:string + }[], +} + +export interface IMsgs { + userName:string, + contents:string, + date:string, + children?: React.ReactNode +} \ No newline at end of file diff --git a/src/interfaces/index.tsx b/src/interfaces/index.tsx new file mode 100644 index 0000000..61a285b --- /dev/null +++ b/src/interfaces/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; + +export interface ITodoList { + contents: string; + id: number; + isDone: boolean; +} +export interface IYetListProps { + list: []; + yetNum: number; + onToggle: (e: React.MouseEvent) => void; + onDelete: (e: React.MouseEvent) => void; +} + +export interface IInputFormProps { + handleFormSubmit: (e: React.SyntheticEvent) => void; + handleContentsChange: (e: React.ChangeEvent) => void; + contents: string; +} + +export interface IDoneList { + list: []; + onToggle: (e: React.MouseEvent) => void; + doneNum: number; +} +// styled-component์— ๋“ค์–ด๊ฐ€๋Š” property ์— ๋Œ€ํ•œ ์ •์˜ +export interface IListBtn { + onClick: (e: React.MouseEvent) => void; +} + +// ํด๋ฆญ : MouseEvent +// ์ž…๋ ฅ : ChangeEvent +// ์ œ์ถœ : SyntheticEvent diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 9dfc1c0..0000000 --- a/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/General.tsx b/src/pages/General.tsx new file mode 100644 index 0000000..cf13aad --- /dev/null +++ b/src/pages/General.tsx @@ -0,0 +1,77 @@ +import { Container } from '../styles/Container'; +import Sidebar from '../components/Sidebar' +import Header from '../components/Header2' +import Main from '../components/Main' +import Start from '../components/Start'; +import styled from 'styled-components'; +import { useRecoilState } from 'recoil'; +import { closeWindow } from '../store/recoil'; + +const General = () => { + const [window, setWindow] = useRecoilState(closeWindow); + return ( + <> + {window ? ( + + +
+
+
+ + + + + + + +
+
+
+ ) : ( + + + + )} + + ); +}; + +const StartWrapper = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; + +const Wrapper = styled.div` + display: flex; + flex-direction: column; + padding: 30px; +`; + +const Wallet = styled.img` + width: 30px; + height: 30px; + margin-bottom: 20px; +`; +const Fix = styled.img` + width: 30px; + height: 30px; + margin-bottom: 20px; +`; +const Shopping = styled.img` + width: 30px; + height: 30px; + margin-bottom: 20px; +`; +const Calendar = styled.img` + width: 30px; + height: 30px; + margin-bottom: 20px; +`; +const Gift = styled.img` + width: 30px; + height: 30px; + margin-bottom: 20px; +`; + +export default General; diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx new file mode 100644 index 0000000..722989f --- /dev/null +++ b/src/pages/Home.tsx @@ -0,0 +1,65 @@ +import { Container } from '../styles/Container'; +import Sidebar from '../components/Sidebar'; +import Header from '../components/Header2'; +import Main from '../components/Main'; +import Search from '../components/Search'; +import UserBox from '../components/UserBox'; +import ChatRoom from '../components/ChatRoom'; +import Start from '../components/Start'; +import { useRecoilState } from 'recoil'; +import { + chatModalToggleState, + chatRoomToggleState, + closeWindow, + friendModalToggleState, + searchToggleState, +} from '../store/recoil'; +import { useCallback, useEffect } from 'react'; + +import styled from 'styled-components'; +const Home = () => { + const [searchToggle, setSearchToggle] = useRecoilState(searchToggleState); + const [friendModalToggle, setFriendModalToggle] = useRecoilState( + friendModalToggleState + ); + const [chatRoomToggle, setChatRoomToggle] = + useRecoilState(chatRoomToggleState); + const [chatModalToggle, setChatModalToggle] = + useRecoilState(chatModalToggleState); + const [window, setWindow] = useRecoilState(closeWindow); + useEffect(() => { + setSearchToggle(false); + setFriendModalToggle(false); + setChatModalToggle(false); + setChatRoomToggle(false); + }, []); + return ( + <> + {window ? ( + + {chatRoomToggle && } + +
+ {searchToggle && } +
+
+ +
+
+
+ ) : ( + + + + )} + + ); +}; + +const StartWrapper = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; + +export default Home; diff --git a/src/pages/Rooms.tsx b/src/pages/Rooms.tsx new file mode 100644 index 0000000..a4abef6 --- /dev/null +++ b/src/pages/Rooms.tsx @@ -0,0 +1,68 @@ +import { Container } from '../styles/Container'; +import Sidebar from '../components/Sidebar'; +import Header from '../components/Header2'; +import Main from '../components/Main'; +import Search from '../components/Search'; +import { useRecoilState } from 'recoil'; +import { + chatModalToggleState, + chatRoomToggleState, + closeWindow, + friendModalToggleState, + searchToggleState, +} from '../store/recoil'; +import { useEffect } from 'react'; +import ChatModal from '../components/ChatModal'; +import UserBox from '../components/UserBox'; +import ChatRoom from '../components/ChatRoom'; +import Start from '../components/Start'; +import styled from 'styled-components'; +const Rooms = () => { + const [window, setWindow] = useRecoilState(closeWindow); + const [searchToggle, setSearchToggle] = useRecoilState(searchToggleState); + const [friendModalToggle, setFriendModalToggle] = useRecoilState( + friendModalToggleState + ); + const [chatModalToggle, setChatModalToggle] = + useRecoilState(chatModalToggleState); + const [chatRoomToggle, setChatRoomToggle] = + useRecoilState(chatRoomToggleState); + useEffect(() => { + setSearchToggle(false); + setFriendModalToggle(false); + setChatModalToggle(false); + }, []); + // @ts-ignore + // @ts-ignore + return ( + <> + {window ? ( + + {chatRoomToggle && } + {chatModalToggle && } + +
+
+ + {searchToggle && } +
+ +
+
+
+ ) : ( + + + + )} + + ); +}; + +const StartWrapper = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; + +export default Rooms; diff --git a/src/store/recoil/data.tsx b/src/store/recoil/data.tsx new file mode 100644 index 0000000..4233cda --- /dev/null +++ b/src/store/recoil/data.tsx @@ -0,0 +1,14 @@ +import { atom } from 'recoil'; +import messageData from '../static/msg.json'; +import userData from '../static/user.json'; +import { IMessage, IUser } from '../../interfaces/data'; + +export const Message = atom({ + key: 'message', + default: messageData.rooms, +}); + +export const userInfo = atom({ + key: 'userInfo', + default: userData.users, +}); diff --git a/src/store/recoil/index.tsx b/src/store/recoil/index.tsx new file mode 100644 index 0000000..4f1272a --- /dev/null +++ b/src/store/recoil/index.tsx @@ -0,0 +1,40 @@ +import { atom } from 'recoil'; +import { IUser } from '../../interfaces/data'; + +export const pathInfo = atom({ + key: 'path', + default: null, +}); + +export const searchToggleState = atom({ + key: 'searchToggleState', + default: false, +}); +export const chatModalToggleState = atom({ + key: 'chatModalToggleState', + default: false, +}); +export const friendModalToggleState = atom({ + key: 'friendModalToggleState', + default: false, +}); + +export const chatRoomToggleState = atom({ + key: 'chatRoomToggleState', + default: false, +}); + +export const userClicked = atom({ + key: 'userClicked', + default: null, +}); + +export const searchValue = atom({ + key: 'searchValue', + default: undefined, +}); + +export const closeWindow = atom({ + key: 'closeWindow', + default: false, +}); diff --git a/src/store/static/msg.json b/src/store/static/msg.json new file mode 100644 index 0000000..0cfe1b5 --- /dev/null +++ b/src/store/static/msg.json @@ -0,0 +1,99 @@ +{ + "rooms": [ + { + "roomId" : 0, + "user" : [{ + "userName": "์ „์‹œ์›","userName": "์นจ์ฐฉ๋งจbde" + }], + "msgs": [ + { + "userName": "์ „์‹œ์›", + "contents": "์•ˆ๋…• ๋‚˜๋Š” ์‹œ์›", + "date": "05-12" + }, + { + "userName": "์นจ์ฐฉ๋งจbde", + "contents": "ํ•๊ฟฑ์ธ„, ๋งค๋†€๊ตฌ๋ฉ, ์ปดํ”†ํ„ฐ", + "date": "05-12" + } + ] + }, + { + "roomId" : 1, + "user" : [{ + "userName": "์ „์‹œ์›" ,"userName": "์ฃผํ˜ธ๋ฏผqwt" + }], + "msgs": [ + { + "userName": "์ „์‹œ์›", + "contents": "๋‹ด์— ๋ด ๋‚˜๋Š” ์‹œ์›", + "date": "05-12" + + }, + { + "userName": "์ฃผํ˜ธ๋ฏผqwt", + "contents": "๋‚˜๋Š” ์ฃผํŽ„, ๊ณ ๊ธฐ๋™ ์ฃผ์ธ์ด๋‹ค.", + "date": "05-12" + } + ] + }, + { + "roomId" : 2, + "user" : [{ + "userName": "์ „์‹œ์›","userName": "๊น€ํ’zxcv" + }], + "msgs": [ + { + "userName": "์ „์‹œ์›", + "contents": "๋‹ด์— ๋ด ๋‚˜๋Š” ์‹œ์›", + "date": "05-12" + + }, + { + "userName": "๊น€ํ’zxcv", + "contents": "์˜พ์นดํŽ˜ ์ ‘๊ณ  ๋ผ๋ฉด๊ผฐ๋Œ€๋กœ ํ™œ๋™์ค‘์ž…๋‹ˆ๋‹ค?", + "date": "05-12" + } + ] + }, + { + "roomId" : 3, + "user" : [{ + "userName": "์ „์‹œ์›","userName": "ํƒœ์™„์”จliup" + }], + "msgs": [ + { + "userName": "์ „์‹œ์›", + "contents": "๋‹ด์— ๋ด ๋‚˜๋Š” ์‹œ์›", + "date": "05-12" + + }, + { + "userName": "ํƒœ์™„์”จliup", + "contents": "์นจ์ฐฉ๋งจ ํ‚น๋šœ๊ป‘ ๋จน์—ฌ์•ผํ•˜๋Š”๋ฐ..", + "date": "05-12" + } + ] + }, + { + "roomId" : 4, + "user" : [{ + "userName": "์ „์‹œ์›","userName": "์Šˆ๋ง์ฝ”qwejrl" + }], + "msgs": [ + { + "userName": "์ „์‹œ์›", + "contents": "๋‹ด์— ๋ด ๋‚˜๋Š” ์‹œ์›", + "date": "05-12" + + }, + { + "userName": "์Šˆ๋ง์ฝ”qwejrl", + "contents": "ํ•œ๊ตญ ์ „๊ตญ, ์‚ผ๊ดด๊ถŒ์„ ์‹ค์ œ๋กœ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค?!", + "date": "05-12" + } + ] + } + + ] +} \ No newline at end of file diff --git a/src/store/static/user.json b/src/store/static/user.json new file mode 100644 index 0000000..1b81ebd --- /dev/null +++ b/src/store/static/user.json @@ -0,0 +1,63 @@ +{ + "users": [ + { + "userId" : 0, + "userName" : "์ „์‹œ์›", + "profileImg" : "data:image/jpeg;base64,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", + "introduce" : "๋ฐฐ๊ฐ€๊ณ ํ”„๋‹ค..", + "profileMusic": "", + "isMe" : true, + "last" : "" + }, + { + "userId" : 1, + "userName" : "์นจ์ฐฉ๋งจbde", + "profileImg" : "http://www.joseilbo.com/gisa_img_origin/16457634701645763470_joseedu_origin.JPG", + "introduce" : "์˜ค๋Š˜๋„ ์ข‹์€ ํ•˜๋ฃจ ๋˜์„ธ์š”", + "profileMusic": "", + "isMe" : false, + "last" : "ํ•๊ฟฑ์ธ„, ๋งค๋†€๊ตฌ๋ฉ, ์ปดํ”†ํ„ฐ" + + }, + { + "userId" : 2, + "userName" : "์ฃผํ˜ธ๋ฏผqwt", + "profileImg" : "data:image/jpeg;base64,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", + "introduce" : "๊ณ ๊ธฐ๋™ ์ฃผํ˜ธ๋ฏผ ๊ด€์žฅ", + "profileMusic": "", + "isMe" : false, + "last" : "๋‚˜๋Š” ์ฃผํŽ„, ๊ณ ๊ธฐ๋™ ์ฃผ์ธ์ด๋‹ค." + + }, + { + "userId" : 3, + "userName" : "๊น€ํ’zxcv", + "profileImg" : "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSBkwAU5oP91yRmy6jO9Dwdo5DznZoZOLWSTg&usqp=CAU", + "introduce" : "์ „๋ฌด๋‹˜", + "profileMusic": "", + "isMe" : false, + "last" : "์˜พ์นดํŽ˜ ์ ‘๊ณ  ๋ผ๋ฉด๊ผฐ๋Œ€๋กœ ํ™œ๋™์ค‘์ž…๋‹ˆ๋‹ค?" + + }, + { + "userId" : 4, + "userName" : "ํƒœ์™„์”จliup", + "profileImg" : "data:image/jpeg;base64,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", + "introduce" : "2๋Œ€ ์นจํˆฌ๋ถ€ ์ˆ˜ํ˜ธ์ž", + "profileMusic": "", + "isMe" : false, + "last" : "์นจ์ฐฉ๋งจ ํ‚น๋šœ๊ป‘ ๋จน์—ฌ์•ผํ•˜๋Š”๋ฐ.." + + }, + { + "userId" : 5, + "userName" : "์Šˆ๋ง์ฝ”qwejrl", + "profileImg" : "data:image/png;base64,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", + "introduce" : "ํ‡ด์‚ฌํ•˜๊ณ  ์‹ถ๋‹ค", + "profileMusic": "", + "isMe" : false, + "last" : "ํ•œ๊ตญ ์ „๊ตญ, ์‚ผ๊ดด๊ถŒ์„ ์‹ค์ œ๋กœ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค?!" + + } + ] +} \ No newline at end of file diff --git a/src/styles/Container.tsx b/src/styles/Container.tsx new file mode 100644 index 0000000..d689611 --- /dev/null +++ b/src/styles/Container.tsx @@ -0,0 +1,18 @@ +import styled from 'styled-components'; + +export const Container = styled.main` + background-color: #fff; + width: 100vw; + height: 100vh; + @media screen and (min-width: 600px) { + position: relative; + width: 390px; + height: 545px; + min-height: 500px; + background-color: #fff; + border-radius: 15px; + box-shadow: rgba(0, 0, 0, 0.2) 0 0 20px; + display: grid; + grid-template-columns: 65px 325px; + } +`; diff --git a/src/styles/GlobalStyle.tsx b/src/styles/GlobalStyle.tsx new file mode 100644 index 0000000..d768b0a --- /dev/null +++ b/src/styles/GlobalStyle.tsx @@ -0,0 +1,22 @@ +import { createGlobalStyle } from 'styled-components'; +import { normalize } from 'styled-normalize'; +const GlobalStyle = createGlobalStyle` + ${normalize} + *{ + box-sizing: border-box; + } + body { + margin: 0px; + background-color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + height: 100vh; + font-family: 'Noto Sans KR', sans-serif; + font-size: 10pt; + + } + +`; + +export default GlobalStyle; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3d2597c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "sourceMap": true, + "lib": ["ES2020", "DOM"], + "jsx": "react-jsx", + "module": "esnext", + "moduleResolution": "Node", + "target": "es5", + "strict": true, + "resolveJsonModule": true, + "baseUrl": ".", + } +}