Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
364c484
refactor(Sprint5): 불필요한 console.log 삭제
cskime Jul 29, 2025
700e63b
feat(Sprint5): BASE_URL을 환경 변수로 관리
cskime Jul 29, 2025
1a4411c
fix(Sprint5): Item 제목을 <h3> semantic tag로 교체
cskime Jul 29, 2025
d36e752
refactor(Sprint5): 베스트 상품의 정렬 로직을 useMemo hook으로 최적화
cskime Jul 29, 2025
097687f
chore(Sprint5): 상용 환경 변수 추가
cskime Jul 29, 2025
80a1b3d
fix(Sprint5): fix typo
cskime Jul 29, 2025
83e9535
chore(Sprint6): styled-components package 설치
cskime Jul 30, 2025
a76bf33
feat(Sprint6): `/additem` path로 이동했을 때 '중고마켓' 링크를 active 상태로 유지
cskime Jul 31, 2025
d0c8777
refactor(Sprint6): 파일 이름을 kebab-case로 변경 (add-item-page)
cskime Jul 31, 2025
76b0be8
feat(Sprint6): `styled-components`로 Button component 구현
cskime Jul 31, 2025
25b0054
fix(Sprint5): `exhaustive-deps` warning 제거
cskime Jul 31, 2025
4e9f92c
feat(Sprint6): Item 및 section 관련 component를 `styled-components`로 교체
cskime Jul 31, 2025
d78c40b
refactor(Sprint6): ItemsPage를 styled-components로 교체, kebab-case 이름 변경
cskime Jul 31, 2025
eb3ec33
feat(Sprint6): Section에서 header와 content의 gap을 설정할 수 있도록 변경
cskime Jul 31, 2025
fa9ad93
feat(Sprint6): 상품 등록 화면 기본 구조 구현
cskime Jul 31, 2025
ec790dc
fix(Sprint6): Custom prop에 transient prop 적용
cskime Jul 31, 2025
0011b05
feat(Sprint6): 상품 등록하기 - 상품 이미지 추가 구현
cskime Jul 31, 2025
5895461
feat(Sprint6): 상품 등록하기 - 이미지 추가 최대 1개 제한, 추가한 이미지 삭제 구현
cskime Jul 31, 2025
aec59f2
feat(Sprint6): Mobile에서 SectionHeader의 Button action이 오른쪽 상단에 고정되도록 수정
cskime Jul 31, 2025
cd8d67e
fix(Sprint6): 상품 등록하기 - mobile에서 상품 이미지 input과 preview가 영역을 1:1로 차지하…
cskime Jul 31, 2025
4261082
feat(Sprint6): 상품 등록하기 - Text input component 구현
cskime Aug 1, 2025
0cc760a
feat(Sprint6) 상품 등록하기 - 태그 목록 구현
cskime Aug 1, 2025
d94f0b2
fix(Sprint6): SectionHeaderAction wrapper에 전달된 prop을 Button에 모두 전달
cskime Aug 1, 2025
85176e7
feat(Sprint6): 상품 등록하기 - title, desc, price input을 입력했을 때만 등록 버튼 활성화
cskime Aug 1, 2025
1519cf3
feat(Sprint6): 상품 등록하기 - 가격 input에 숫자만 입력, 콤마 formatting 적용
cskime Aug 1, 2025
d847985
feat(Sprint6): 태그 추가/삭제 구현
cskime Aug 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions vite-project/.env.development
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿굿 개발 환경과 운영 환경을 따로 분리하셨군요 ! 😉👍

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_API_BASE_URL=https://panda-market-api.vercel.app
1 change: 1 addition & 0 deletions vite-project/.env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_API_BASE_URL=https://panda-market-api.vercel.app
143 changes: 138 additions & 5 deletions vite-project/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion vite-project/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"dependencies": {
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-router-dom": "^7.7.0"
"react-router-dom": "^7.7.0",
"styled-components": "^6.1.19"
},
"devDependencies": {
"@eslint/js": "^9.25.0",
Expand Down
4 changes: 1 addition & 3 deletions vite-project/src/api/products.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
const BASE_URL = "https://panda-market-api.vercel.app";

export async function fetchProducts({
keyword = "",
page = 1,
pageSize = 10,
orderBy = "recent",
} = {}) {
const url = new URL(`${BASE_URL}/products`);
const url = new URL(`${import.meta.env.VITE_API_BASE_URL}/products`);
url.searchParams.append("page", page);
url.searchParams.append("pageSize", pageSize);
url.searchParams.append("orderBy", orderBy);
Expand Down
4 changes: 4 additions & 0 deletions vite-project/src/assets/ic-plus-gray.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions vite-project/src/assets/ic-xmark-fill.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 0 additions & 13 deletions vite-project/src/components/Button.css

This file was deleted.

23 changes: 16 additions & 7 deletions vite-project/src/components/Button.jsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
import "./Button.css";
import styled from "styled-components";

function Button({ title, onClick }) {
return (
<button className="Button" onClick={onClick}>
{title}
</button>
);
const StyledButton = styled.button`
background-color: ${({ disabled }) =>
disabled ? "var(--color-cool-gray-400)" : "var(--color-primary-100)"};
padding: 8px 23px;
color: var(--color-cool-gray-100);
font-size: 16px;
font-weight: 600;
line-height: 26px;
border-radius: 8px;
border: none;
cursor: ${({ disabled }) => (disabled ? "default" : "pointer")};
`;

function Button({ children, ...props }) {
return <StyledButton {...props}>{children}</StyledButton>;
}

export default Button;
51 changes: 0 additions & 51 deletions vite-project/src/components/Item.css

This file was deleted.

23 changes: 0 additions & 23 deletions vite-project/src/components/Item.jsx

This file was deleted.

Loading
Loading