From 8ad223276ffa43090a61949048344daca1ad32ec Mon Sep 17 00:00:00 2001 From: parkingun Date: Mon, 2 Dec 2024 08:35:02 +0900 Subject: [PATCH] =?UTF-8?q?sprint5=20=EB=AF=B8=EC=85=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 107 +++++++++++++++++++++++++- package.json | 2 + public/favicon.ico | Bin 3870 -> 0 bytes public/index.html | 44 ++++------- public/logo192.png | Bin 5347 -> 0 bytes public/logo512.png | Bin 9664 -> 0 bytes public/manifest.json | 25 ------ public/robots.txt | 3 - src/App.css | 38 ---------- src/App.js | 25 ------ src/App.test.js | 8 -- src/Main.js | 16 ++++ src/assets/favorite_icon.png | Bin 0 -> 465 bytes src/assets/logo.png | Bin 0 -> 2799 bytes src/assets/panda_logo.png | Bin 0 -> 1516 bytes src/assets/profile_icon.png | Bin 0 -> 1349 bytes src/components/AddItemPage.jsx | 5 ++ src/components/AllProductList.css | 118 +++++++++++++++++++++++++++++ src/components/AllProductList.jsx | 91 ++++++++++++++++++++++ src/components/App.css | 5 ++ src/components/App.jsx | 19 +++++ src/components/BestProductList.css | 51 +++++++++++++ src/components/BestProductList.jsx | 63 +++++++++++++++ src/components/NavBar.css | 55 ++++++++++++++ src/components/NavBar.jsx | 28 +++++++ src/index.css | 13 ---- src/index.js | 21 ++--- src/logo.svg | 1 - src/reportWebVitals.js | 13 ---- src/services/api.js | 17 +++++ src/setupTests.js | 5 -- 31 files changed, 593 insertions(+), 180 deletions(-) delete mode 100644 public/favicon.ico delete mode 100644 public/logo192.png delete mode 100644 public/logo512.png delete mode 100644 public/manifest.json delete mode 100644 public/robots.txt delete mode 100644 src/App.css delete mode 100644 src/App.js delete mode 100644 src/App.test.js create mode 100644 src/Main.js create mode 100644 src/assets/favorite_icon.png create mode 100644 src/assets/logo.png create mode 100644 src/assets/panda_logo.png create mode 100644 src/assets/profile_icon.png create mode 100644 src/components/AddItemPage.jsx create mode 100644 src/components/AllProductList.css create mode 100644 src/components/AllProductList.jsx create mode 100644 src/components/App.css create mode 100644 src/components/App.jsx create mode 100644 src/components/BestProductList.css create mode 100644 src/components/BestProductList.jsx create mode 100644 src/components/NavBar.css create mode 100644 src/components/NavBar.jsx delete mode 100644 src/index.css delete mode 100644 src/logo.svg delete mode 100644 src/reportWebVitals.js create mode 100644 src/services/api.js delete mode 100644 src/setupTests.js diff --git a/package-lock.json b/package-lock.json index a1e590ee6..1e5843bb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,10 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.7.7", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^7.0.1", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" } @@ -3953,6 +3955,12 @@ "@types/node": "*" } }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, "node_modules/@types/eslint": { "version": "8.44.2", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", @@ -5285,6 +5293,31 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -8294,15 +8327,16 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -14375,6 +14409,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -14671,6 +14711,55 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", + "integrity": "sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.1.tgz", + "integrity": "sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==", + "license": "MIT", + "dependencies": { + "react-router": "7.0.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-router/node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -15480,6 +15569,12 @@ "node": ">= 0.8.0" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -16512,6 +16607,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 7ff0d6b58..d8d22145f 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,10 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.7.7", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^7.0.1", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" }, diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/public/index.html b/public/index.html index aa069f27c..b76b2e4ce 100644 --- a/public/index.html +++ b/public/index.html @@ -1,43 +1,27 @@ - + - + 판다마켓 + + + - - + + - - - - React App + + 판다마켓 -
- diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index 080d6c77a..000000000 --- a/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index e9e57dc4d..000000000 --- a/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/src/App.css b/src/App.css deleted file mode 100644 index 74b5e0534..000000000 --- a/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/src/App.js b/src/App.js deleted file mode 100644 index 378457572..000000000 --- a/src/App.js +++ /dev/null @@ -1,25 +0,0 @@ -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( - - ); -} - -export default App; diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100644 index 1f03afeec..000000000 --- a/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/src/Main.js b/src/Main.js new file mode 100644 index 000000000..65b9be209 --- /dev/null +++ b/src/Main.js @@ -0,0 +1,16 @@ +import { BrowserRouter, Routes, Route } from "react-router-dom"; +import App from "./components/App"; +import AddItemPage from "./components/AddItemPage"; + +function Main() { + return ( + + + } /> + } /> + + + ); +} + +export default Main; diff --git a/src/assets/favorite_icon.png b/src/assets/favorite_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c0890fd7d299f5a449d6de676c4eab4c0d9d4507 GIT binary patch literal 465 zcmV;?0WSWDP)uBM}$=6<6J8}h8+NFWldRGC!i$|M6-vE9Fb6>wn&`kNkVJx-##)erh$Dt9pYHD(IiPhs@JK*xD|=tc+okDwUe8e_ zD`bVk{UGn3o>y0?detdi&K@UGc6+mP7P_6m6bhEnH`@bgzD4#MBpj{vdr<%oCTwzY z0CyHBM6IYF0c)gbkpt|Nj*#Da$b!E(iftj$<>V*grty2G4MwzJ28`&*cvALNy(pa0f068R8F^9(CAT>;oL~6zSZm?C! z-!y*-$RH*IWh*42TBaa)E2}+E$}oZ7lzTD^THWCl{OkGvX_1+CT3RW=00000NkvXX Hu0mjf+%~*S literal 0 HcmV?d00001 diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4a6e89adf1bf832c50b66db3926a2574303aec GIT binary patch literal 2799 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 BP?P`w literal 0 HcmV?d00001 diff --git a/src/assets/panda_logo.png b/src/assets/panda_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..64cc591814ad73e1e16d65ef3c32caf280de4af6 GIT binary patch literal 1516 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 Hu0mjf8{=zz literal 0 HcmV?d00001 diff --git a/src/components/AddItemPage.jsx b/src/components/AddItemPage.jsx new file mode 100644 index 000000000..5960db47a --- /dev/null +++ b/src/components/AddItemPage.jsx @@ -0,0 +1,5 @@ +function AddItemPage() { + return
AddItemPage
; +} + +export default AddItemPage; diff --git a/src/components/AllProductList.css b/src/components/AllProductList.css new file mode 100644 index 000000000..d85e72791 --- /dev/null +++ b/src/components/AllProductList.css @@ -0,0 +1,118 @@ +.allProducts-nav { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; +} + +.allProducts-nav-right { + display: flex; + align-items: center; + gap: 14px; +} + +.search { + width: 325px; + height: 42px; + padding: 9px 20px; + + border: 0; + border-radius: 12px; + gap: 10px; + + background-color: #f3f4f6; + box-sizing: border-box; +} + +.search::placeholder { + color: #9ca3af; + font-size: 16px; + font-weight: 400; +} + +.registerButton { + color: #f3f4f6; + background-color: #3692ff; + width: 133px; + height: 42px; + border: 0; + border-radius: 8px; + padding: 12px 23px; + cursor: pointer; +} + +.sortButton { + color: #1f2937; + + font-size: 16px; + font-weight: 400; + + width: 130px; + height: 42px; + + border: 1px solid #e5e7eb; + border-radius: 12px; + + padding: 12px 20px; +} + +.sortButton .sortOption { + color: #1f2937; + + font-size: 16px; + font-weight: 400; + + align-items: center; +} + +.allProduct .product-image { + margin-bottom: 16px; +} + +.allProducts { + display: flex; + justify-content: space-between; + align-items: end; + flex-wrap: wrap; + gap: 24px; + + margin-bottom: 40px; +} + +.name { + color: #1f2937; + font-size: 14px; + font-weight: 500; + + margin-top: 0; + margin-bottom: 6px; +} + +.price { + color: #1f2937; + font-size: 16px; + font-weight: 700; + + margin-top: 0; + margin-bottom: 6px; +} + +.favorite { + display: flex; + align-items: center; + + gap: 4px; +} + +.favoriteCount img { + width: 16px; + height: 16px; +} + +.favoriteCount { + color: #4b5563; + font-size: 12px; + font-weight: 500; + + margin: 0; +} diff --git a/src/components/AllProductList.jsx b/src/components/AllProductList.jsx new file mode 100644 index 000000000..e2edeb309 --- /dev/null +++ b/src/components/AllProductList.jsx @@ -0,0 +1,91 @@ +import { useState, useEffect } from "react"; +import { Link } from "react-router-dom"; +import { getProducts } from "../services/api"; +import "./AllProductList.css"; +import favoriteIcon from "../assets/favorite_icon.png"; + +function AllProductList() { + const [allProducts, setAllProducts] = useState([]); + const [orderBy, setOrderBy] = useState(); + const imageSize = "220px"; + + // const [pageSize, setPageSize] = useState(10); + + const loadAllProducts = async () => { + try { + const data = await getProducts({ + page: 1, + pageSize: 10, + orderBy: orderBy, + }); + console.log(data); + setAllProducts(data); + } catch (error) { + console.log("전체 상품 로드 실패: ", error); + } + }; + + useEffect(() => { + loadAllProducts(); + }, [orderBy]); + + const handleOrderChange = (e) => { + setOrderBy(e.target.value); + }; + + return ( +
+
+

전체 상품

+
+ + + + + +
+
+
+ {allProducts.map((product) => ( +
+ 전체 상품 이미지 +
+

{product.name}

+

{product.price.toString()}

+
+ 좋아요 버튼 +

+ {product.favoriteCount.toString()} +

+
+
+
+ ))} +
+
+ ); +} + +export default AllProductList; diff --git a/src/components/App.css b/src/components/App.css new file mode 100644 index 000000000..c5c82e901 --- /dev/null +++ b/src/components/App.css @@ -0,0 +1,5 @@ +title { + color: #111827; + font-size: 20px; + font-weight: 700; +} diff --git a/src/components/App.jsx b/src/components/App.jsx new file mode 100644 index 000000000..b8e797200 --- /dev/null +++ b/src/components/App.jsx @@ -0,0 +1,19 @@ +import { useState, useEffect } from "react"; +import "./App.css"; +import NavBar from "./NavBar"; +import AllProductList from "./AllProductList"; +import BestProductList from "./BestProductList"; + +function App() { + return ( + <> + +
+ + +
+ + ); +} + +export default App; diff --git a/src/components/BestProductList.css b/src/components/BestProductList.css new file mode 100644 index 000000000..113b559ce --- /dev/null +++ b/src/components/BestProductList.css @@ -0,0 +1,51 @@ +.bestProduct .product-image { + margin-bottom: 16px; +} + +.bestProducts { + display: flex; + justify-content: space-between; + align-items: top; + flex-wrap: wrap; + gap: 24px; + + margin-bottom: 40px; +} + +.name { + color: #1f2937; + font-size: 14px; + font-weight: 500; + + margin-top: 0; + margin-bottom: 6px; +} + +.price { + color: #1f2937; + font-size: 16px; + font-weight: 700; + + margin-top: 0; + margin-bottom: 6px; +} + +.favorite { + display: flex; + align-items: center; + + gap: 4px; +} + +.favoriteCount img { + width: 16px; + height: 16px; +} + +.favoriteCount { + color: #4b5563; + font-size: 12px; + font-weight: 500; + + margin: 0; +} diff --git a/src/components/BestProductList.jsx b/src/components/BestProductList.jsx new file mode 100644 index 000000000..ae3890636 --- /dev/null +++ b/src/components/BestProductList.jsx @@ -0,0 +1,63 @@ +import { useState, useEffect } from "react"; +import { getProducts } from "../services/api"; +import "./BestProductList.css"; +import favoriteIcon from "../assets/favorite_icon.png"; + +// function BestProductList({ imageUrl, name, price, favoriteCount, size }) { +function BestProductList() { + const [bestProducts, setBestProducts] = useState([]); + const [orderBy, setOrderBy] = useState(); + // const [pageSize, setPageSize] = useState(10); + const imageSize = "282px"; + + const loadBestProducts = async () => { + try { + const data = await getProducts({ + page: 1, + pageSize: 4, + orderBy: "favorite", + }); + console.log(data); + setBestProducts(data); + } catch (error) { + console.log("베스트 상품 로드 실패: ", error); + } + }; + + useEffect(() => { + loadBestProducts(); + }, []); + + return ( +
+

베스트 상품

+
+ {bestProducts.map((product) => ( +
+ 베스트 상품 이미지 +
+

{product.name}

+

{product.price.toString()}

+
+ 좋아요 버튼 +

+ {product.favoriteCount.toString()} +

+
+
+
+ ))} +
+
+ ); +} + +export default BestProductList; diff --git a/src/components/NavBar.css b/src/components/NavBar.css new file mode 100644 index 000000000..19a6e8640 --- /dev/null +++ b/src/components/NavBar.css @@ -0,0 +1,55 @@ +body { + width: 100%; + margin: 0; +} + +main { + padding: 94px 360px 141px; + height: 1206px; + width: 1206px; + gap: 40px; +} + +.nav { + height: 70px; + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + align-items: center; + + padding-left: 200px; + padding-right: 200px; + + border: 1px solid #dfdfdf; +} + +.nav .nav-left { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + gap: 24px; +} + +.nav .nav-right { + cursor: pointer; +} + +/* .allProducts-nav-right { + display: flex; + gap: 12px; +} */ + +/* +.allProducts-top { + display: flex; + flex-direction: wrap; + justify-content: space-between; + align-items: center; +} */ + +/* .title { + color: #111827; + font-size: 20px; + font-weight: 700; +} */ diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx new file mode 100644 index 000000000..7e3184927 --- /dev/null +++ b/src/components/NavBar.jsx @@ -0,0 +1,28 @@ +import logoImage from "../assets/logo.png"; +import profileImage from "../assets/profile_icon.png"; +import "./NavBar.css"; + +function NavBar() { + return ( +
+ +
+ ); +} + +export default NavBar; diff --git a/src/index.css b/src/index.css deleted file mode 100644 index ec2585e8c..000000000 --- a/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/src/index.js b/src/index.js index d563c0fb1..a8d9b1122 100644 --- a/src/index.js +++ b/src/index.js @@ -1,17 +1,6 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import App from './App'; -import reportWebVitals from './reportWebVitals'; +import React from "react"; +import ReactDOM from "react-dom/client"; +import Main from "./Main"; -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render( - - - -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(
); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 9dfc1c058..000000000 --- a/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js deleted file mode 100644 index 5253d3ad9..000000000 --- a/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/src/services/api.js b/src/services/api.js new file mode 100644 index 000000000..0742c7f2f --- /dev/null +++ b/src/services/api.js @@ -0,0 +1,17 @@ +export async function getProducts({ + page = 1, + pageSize = 10, + orderBy = "recent", +}) { + const baseURL = "https://panda-market-api.vercel.app"; + + const response = await fetch( + `${baseURL}/products?page=${page}&pageSize=${pageSize}&orderBy=${orderBy}` + ); + + if (!response.ok) { + throw new Error("상품 정보를 가져오는데 실패했습니다."); + } + const body = await response.json(); + return body.list; +} diff --git a/src/setupTests.js b/src/setupTests.js deleted file mode 100644 index 8f2609b7b..000000000 --- a/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom';
-
- logo -

- Edit src/App.js and save to reload. -

-
- Learn React - -
-