From b2db54b00eaf05267fa6fdb6159cdfd52e2a6329 Mon Sep 17 00:00:00 2001
From: limyira <102654496+limyira@users.noreply.github.com>
Date: Tue, 31 Jan 2023 15:29:11 +0900
Subject: [PATCH] Create post (#31)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* formstate err
* #19 feat: 로그인 유효성검증
* feat:login-style-prototype
* feat:login-style-prototype
* test(#19)
* feat:19-login-style2(#19)
* feat:19-login-style3(#19)
* feat/19-login-style(3)
* feat:19-post
* feat:25-createPost(#25)
* feat:25-createPost-style(#25)
* feat:25-createPost-style(#25)
* feat:25-createPost(#25)
* feat:25-styled-components(#25)
* feat:25-Error-fixed(#25)
* feat:25-loginData(#25)
* feat:25-api연동(#25)
* feat:25-gitpull(#25)
---
.gitignore | 23 ++
app/package-lock.json | 216 ++++++++++++++--
app/package.json | 1 +
app/src/App.js | 6 +-
app/src/components/Nav/style.module.css | 75 ++++++
app/src/context/test.js | 2 +
app/src/index.js | 33 +--
app/src/pages/Login/Form/index.jsx | 1 -
.../Main/Location/Address/style.module.css | 4 +
app/src/pages/Main/Location/style.module.css | 82 ++++++
app/src/pages/Main/Post/Modify/index.jsx | 1 -
app/src/pages/Main/Post/style.module.css | 241 ++++++++++++++++++
app/src/pages/Main/index.jsx | 4 +-
app/src/pages/Main/style.module.css | 97 +++++++
app/src/pages/SignUp/Form/style.module.css | 53 ++++
app/src/pages/SignUp/style.module.css | 36 +++
app/src/pages/Upload/Form/index.jsx | 70 +++++
app/src/pages/Upload/Form/style.module.css | 61 +++++
app/src/pages/Upload/index.jsx | 26 ++
app/src/pages/Upload/item/GridItem.jsx | 64 +++++
app/src/pages/Upload/item/style.module.css | 53 ++++
app/src/pages/Upload/style.module.css | 25 ++
app/src/utils/cookie.js | 14 +
app/src/utils/token.js | 60 +++++
node_modules/.package-lock.json | 119 +++++++++
package-lock.json | 226 ++++++++++++++++
package.json | 5 +
27 files changed, 1560 insertions(+), 38 deletions(-)
create mode 100644 .gitignore
create mode 100644 app/src/pages/Upload/Form/index.jsx
create mode 100644 app/src/pages/Upload/Form/style.module.css
create mode 100644 app/src/pages/Upload/index.jsx
create mode 100644 app/src/pages/Upload/item/GridItem.jsx
create mode 100644 app/src/pages/Upload/item/style.module.css
create mode 100644 app/src/pages/Upload/style.module.css
create mode 100644 app/src/utils/cookie.js
create mode 100644 app/src/utils/token.js
create mode 100644 node_modules/.package-lock.json
create mode 100644 package-lock.json
create mode 100644 package.json
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..24cdedf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,23 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# 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*
\ No newline at end of file
diff --git a/app/package-lock.json b/app/package-lock.json
index 3442850..5a91eb9 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -18,6 +18,7 @@
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"axios": "^1.1.3",
+ "framer-motion": "^8.5.0",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-cookie": "^4.1.1",
@@ -2193,6 +2194,21 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
"node_modules/@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@@ -3164,6 +3180,64 @@
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
+ "node_modules/@motionone/animation": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz",
+ "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==",
+ "dependencies": {
+ "@motionone/easing": "^10.15.1",
+ "@motionone/types": "^10.15.1",
+ "@motionone/utils": "^10.15.1",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@motionone/dom": {
+ "version": "10.15.5",
+ "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.15.5.tgz",
+ "integrity": "sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==",
+ "dependencies": {
+ "@motionone/animation": "^10.15.1",
+ "@motionone/generators": "^10.15.1",
+ "@motionone/types": "^10.15.1",
+ "@motionone/utils": "^10.15.1",
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@motionone/easing": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz",
+ "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==",
+ "dependencies": {
+ "@motionone/utils": "^10.15.1",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@motionone/generators": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz",
+ "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==",
+ "dependencies": {
+ "@motionone/types": "^10.15.1",
+ "@motionone/utils": "^10.15.1",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@motionone/types": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz",
+ "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA=="
+ },
+ "node_modules/@motionone/utils": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz",
+ "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==",
+ "dependencies": {
+ "@motionone/types": "^10.15.1",
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.3.1"
+ }
+ },
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -8227,6 +8301,23 @@
"url": "https://www.patreon.com/infusion"
}
},
+ "node_modules/framer-motion": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-8.5.0.tgz",
+ "integrity": "sha512-z5hQvIa+9uFcA2aFmT+6XsUfuVPl9Y1uhs5yntxU1Q0E6hm4wDRpvFlB/yYN/cdfXUctf/1Q1Rep/dqOipz8sg==",
+ "dependencies": {
+ "@motionone/dom": "^10.15.3",
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
@@ -8258,19 +8349,6 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -8613,6 +8691,11 @@
"he": "bin/he"
}
},
+ "node_modules/hey-listen": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz",
+ "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q=="
+ },
"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",
@@ -14176,9 +14259,15 @@
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
},
"node_modules/react-hook-form": {
+<<<<<<< HEAD
+ "version": "7.41.5",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.5.tgz",
+ "integrity": "sha512-DAKjSJ7X9f16oQrP3TW2/eD9N6HOgrmIahP4LOdFphEWVfGZ2LulFd6f6AQ/YS/0cx/5oc4j8a1PXxuaurWp/Q==",
+=======
"version": "7.43.0",
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.43.0.tgz",
"integrity": "sha512-/rVEz7T0gLdSFwPqutJ1kn2e0sQNyb9ci/hmwEYr2YG0KF/LSuRLvNrf9QWJM+gj88CjDpDW5Bh/1AD7B2+z9Q==",
+>>>>>>> 90d162a6bad55ca2549583c22fcc668cc0fba327
"engines": {
"node": ">=12.22.0"
},
@@ -18654,6 +18743,21 @@
"integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==",
"requires": {}
},
+ "@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "requires": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
"@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@@ -19435,6 +19539,64 @@
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
+ "@motionone/animation": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz",
+ "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==",
+ "requires": {
+ "@motionone/easing": "^10.15.1",
+ "@motionone/types": "^10.15.1",
+ "@motionone/utils": "^10.15.1",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@motionone/dom": {
+ "version": "10.15.5",
+ "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.15.5.tgz",
+ "integrity": "sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==",
+ "requires": {
+ "@motionone/animation": "^10.15.1",
+ "@motionone/generators": "^10.15.1",
+ "@motionone/types": "^10.15.1",
+ "@motionone/utils": "^10.15.1",
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@motionone/easing": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz",
+ "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==",
+ "requires": {
+ "@motionone/utils": "^10.15.1",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@motionone/generators": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz",
+ "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==",
+ "requires": {
+ "@motionone/types": "^10.15.1",
+ "@motionone/utils": "^10.15.1",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@motionone/types": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz",
+ "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA=="
+ },
+ "@motionone/utils": {
+ "version": "10.15.1",
+ "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz",
+ "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==",
+ "requires": {
+ "@motionone/types": "^10.15.1",
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.3.1"
+ }
+ },
"@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -23164,6 +23326,17 @@
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
},
+ "framer-motion": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-8.5.0.tgz",
+ "integrity": "sha512-z5hQvIa+9uFcA2aFmT+6XsUfuVPl9Y1uhs5yntxU1Q0E6hm4wDRpvFlB/yYN/cdfXUctf/1Q1Rep/dqOipz8sg==",
+ "requires": {
+ "@emotion/is-prop-valid": "^0.8.2",
+ "@motionone/dom": "^10.15.3",
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.4.0"
+ }
+ },
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
@@ -23189,12 +23362,6 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "optional": true
- },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -23428,6 +23595,11 @@
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
+ "hey-listen": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz",
+ "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q=="
+ },
"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",
@@ -27416,9 +27588,15 @@
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
},
"react-hook-form": {
+<<<<<<< HEAD
+ "version": "7.41.5",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.5.tgz",
+ "integrity": "sha512-DAKjSJ7X9f16oQrP3TW2/eD9N6HOgrmIahP4LOdFphEWVfGZ2LulFd6f6AQ/YS/0cx/5oc4j8a1PXxuaurWp/Q==",
+=======
"version": "7.43.0",
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.43.0.tgz",
"integrity": "sha512-/rVEz7T0gLdSFwPqutJ1kn2e0sQNyb9ci/hmwEYr2YG0KF/LSuRLvNrf9QWJM+gj88CjDpDW5Bh/1AD7B2+z9Q==",
+>>>>>>> 90d162a6bad55ca2549583c22fcc668cc0fba327
"requires": {}
},
"react-intersection-observer": {
diff --git a/app/package.json b/app/package.json
index 8b5c11f..9eac936 100644
--- a/app/package.json
+++ b/app/package.json
@@ -13,6 +13,7 @@
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"axios": "^1.1.3",
+ "framer-motion": "^8.5.0",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-cookie": "^4.1.1",
diff --git a/app/src/App.js b/app/src/App.js
index afbdcdd..f316390 100644
--- a/app/src/App.js
+++ b/app/src/App.js
@@ -5,6 +5,10 @@ import './App.css';
import { Main, SignUp, Post } from './pages/index';
import { PATH } from './constants/path';
import Login from './pages/Login';
+<<<<<<< HEAD
+import CreatePost from './pages/Upload';
+=======
+>>>>>>> 90d162a6bad55ca2549583c22fcc668cc0fba327
/* prop 타입체크 */
// import PropTypes from 'prop-types';
@@ -24,6 +28,7 @@ function App() {