diff --git a/index.html b/index.html
index 0c589ecc..c258e483 100644
--- a/index.html
+++ b/index.html
@@ -2,9 +2,13 @@
@@ -16,9 +17,7 @@ function Header() {
자유게시판
-
+
중고마켓
diff --git a/src/components/InputField.jsx b/src/components/InputField.jsx
new file mode 100644
index 00000000..1374f2c5
--- /dev/null
+++ b/src/components/InputField.jsx
@@ -0,0 +1,31 @@
+function inputField({ type, label, value, onChange, onKeyDown, placeholder }) {
+ if (type === "input") {
+ return (
+
+ );
+ } else if (type === "textarea") {
+ return (
+
+ );
+ }
+}
+
+export default inputField;
diff --git a/src/components/ItemControls.jsx b/src/components/ItemControls.jsx
index c0908222..7da6b757 100644
--- a/src/components/ItemControls.jsx
+++ b/src/components/ItemControls.jsx
@@ -18,7 +18,9 @@ function ItemControl({ isMobile, options }) {
전체상품
- 상품 등록하기
+
+ 상품 등록하기
+
@@ -44,7 +46,9 @@ function ItemControl({ isMobile, options }) {
placeholder="검색할 상품을 입력해주세요"
/>
-
상품 등록하기
+
+ 상품 등록하기
+
>
diff --git a/src/pages/AddItemPage.jsx b/src/pages/AddItemPage.jsx
index 7fe47cbc..bb355a64 100644
--- a/src/pages/AddItemPage.jsx
+++ b/src/pages/AddItemPage.jsx
@@ -1,5 +1,148 @@
+import { useState, useRef } from "react";
+import Button from "../components/Button";
+import Header from "../components/Header";
+import InputField from "../components/InputField";
+import plus from "../assets/icons/plus.svg";
+import x from "../assets/icons/x.svg";
+
function AddItemPage() {
- return
hi
;
+ const imgRef = useRef(null);
+ const [imgPreview, setImgPreview] = useState("");
+ const [itemName, setItemName] = useState("");
+ const [itemDetail, setItemDetail] = useState("");
+ const [price, setPrice] = useState("");
+ const [tagInput, setTagInput] = useState("");
+ const [tags, setTags] = useState([]);
+ const isFormValid = itemName && itemDetail && price && tags.length > 0;
+
+ const handleUploadImg = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const previewUrl = URL.createObjectURL(file);
+ setImgPreview(previewUrl);
+ }
+ };
+ const handleDeleteImg = () => {
+ setImgPreview("");
+ if (imgRef.current) {
+ imgRef.current.value = null;
+ }
+ };
+
+ const handleEnterTag = (e) => {
+ if (e.key === "Enter" && !e.nativeEvent.isComposing) {
+ e.preventDefault();
+ const newTag = tagInput.trim();
+ if (newTag && !tags.includes(newTag)) {
+ setTags([...tags, newTag]);
+ }
+ setTagInput("");
+ }
+ };
+ const handleDeleteTag = (index) => {
+ const newTags = [...tags];
+ newTags.splice(index, 1);
+ setTags(newTags);
+ };
+
+ return (
+
+
+
+
+
+
상품 이미지
+
+
+
+ 이미지 등록
+
+
+ {imgPreview ? (
+ <>
+
+
+ >
+ ) : (
+ ""
+ )}
+
+ {imgPreview ? (
+
+ *이미지 등록은 최대 1개까지 가능합니다.
+
+ ) : (
+ ""
+ )}
+
+
setItemName(e.target.value)}
+ placeholder="상품명을 입력해주세요"
+ />
+ setItemDetail(e.target.value)}
+ placeholder="상품 소개를 입력해주세요"
+ />
+ setPrice(e.target.value)}
+ placeholder="판매 가격을 입력해주세요"
+ />
+ setTagInput(e.target.value)}
+ onKeyDown={handleEnterTag}
+ placeholder="태그를 입력해주세요"
+ />
+
+ {tags.map((tag, index) => {
+ return (
+
+ #{tag}
+ handleDeleteTag(index)}
+ />
+
+ );
+ })}
+
+
+
+ );
}
export default AddItemPage;
diff --git a/src/pages/ItemsPage.jsx b/src/pages/ItemsPage.jsx
index 8e42db29..24e0fc71 100644
--- a/src/pages/ItemsPage.jsx
+++ b/src/pages/ItemsPage.jsx
@@ -11,7 +11,7 @@ function ItemsPage() {
const [sort, setSort] = useState("recent");
const [totalProducts, setTotalProducts] = useState(1);
const [bestProducts, setBestProducts] = useState([]);
- const [best, setBest] = useState(4);
+ const [best, setBest] = useState("");
const [totalPages, setTotalPages] = useState(1);
const [itemsPerPage, setItemsPerPage] = useState(10);
const [currentPage, setCurrentPage] = useState(1);
diff --git a/src/pages/MainPage.jsx b/src/pages/MainPage.jsx
index ef976150..e52bb485 100644
--- a/src/pages/MainPage.jsx
+++ b/src/pages/MainPage.jsx
@@ -1,4 +1,4 @@
-import { Link } from "react-router-dom";
+import { Link, useNavigate } from "react-router-dom";
import MainSection from "../components/MainSection";
import logo from "../assets/images/logo.svg";
import logoText from "../assets/images/logo_text.svg";
@@ -7,8 +7,15 @@ import bottomImg from "../assets/images/home_bottom.svg";
import img1 from "../assets/images/home_01.svg";
import img2 from "../assets/images/home_02.svg";
import img3 from "../assets/images/home_03.svg";
+import Button from "../components/Button";
function MainPage() {
+ const navigate = useNavigate();
+
+ const handleButtonClick = () => {
+ navigate("/items");
+ };
+
return (
@@ -17,7 +24,9 @@ function MainPage() {
-
로그인
+
+ 로그인
+