Skip to content
Merged

v.2 #234

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
9de8b71
✨ [#165] Feat: 마이-메인페이지의 사용자 프로필 컴포넌트 구현
MyungJiwoo Jul 30, 2025
2357177
✨ [#165] Feat: 마이-메인페이지의 상태 요약 컴포넌트 구현
MyungJiwoo Jul 30, 2025
fdf84e3
✨ [#165] Feat: 마이-메인페이지의 모집 중인 체험 카드 컴포넌트 구현
MyungJiwoo Jul 30, 2025
425de44
✨ [#165] Feat: 마이-메인페이지의 다가오는 일정 컴포넌트 구현
MyungJiwoo Jul 30, 2025
037b1af
📝 [#165] Docs: 마이-메인페이지의 UI 컴포넌트들의 디자인 문서 작성
MyungJiwoo Jul 30, 2025
b319fc9
🎨 [#173] Style: 공용 스타일 추가
HarrySeop Jul 30, 2025
b247545
♻️ [#175] Refactor: reservation-status 페이지 코드 정리, 등록된 체험 없을 겨우 페이지 진입…
Jul 30, 2025
da06d8a
🎨 [#173] Style: 버튼 디자인 수정 및 종류 추가
HarrySeop Jul 30, 2025
3eb33e2
Merge pull request #176 from What-Today-FE/bug/kjhyun/175
kjhyun0830 Jul 30, 2025
9dec724
Merge pull request #178 from What-Today-FE/refactor/HarrySeop/173
kjhyun0830 Jul 30, 2025
95bcb6c
🔨 [#177] Fix: 버튼 추가된 size type에 추가
Jul 30, 2025
aed6a44
✨ [#174] Feat: 체험 등록/수정 페이지 기본 UI 구현
MyungJiwoo Jul 30, 2025
ced29d4
✨ [#174] Feat: 등록 폼 유효성 검사
MyungJiwoo Jul 30, 2025
c775d63
♻️ [#179] Refactor: 예약 취소 로직 수정
HarrySeop Jul 30, 2025
3f2b953
♻️ [#179] Refactor: 예약 내역 카드 클릭시 해당 페이지로 이동
HarrySeop Jul 30, 2025
7189fcb
🎨 [#179] Style: 통일 된 UI에 맞춰 컴포넌트 디자인 수정
HarrySeop Jul 30, 2025
168d007
🎨 [#179] Style: 인원도 자릿수 표시
HarrySeop Jul 30, 2025
1dc6f99
🎨 [#179] Style: 특정 버튼 과 게시글 간격 조절
HarrySeop Jul 30, 2025
954f7f7
🎨 [#179] Style: 예약 내역 카드 섹션 테두리 수정
HarrySeop Jul 30, 2025
684884b
🎨 [#179] Style: 추가 디자인 수정
HarrySeop Jul 30, 2025
b574e9e
✨[#181] Feat: 무한스크롤을 위한 후기 api 구현
HarrySeop Jul 30, 2025
3193e81
✨[#181] Feat: 리뷰 섹션에서 체험 id로 동작하게 추가
HarrySeop Jul 30, 2025
1ce11fc
✨[#181] Feat: 체험 후기 무한스크롤 리액트 쿼리 훅 추가
HarrySeop Jul 30, 2025
ae72845
♻️ [#181] Refactor: 후기 영역 수정
HarrySeop Jul 30, 2025
93e7757
🎨 [#179] Style: 공용 스타일 중간 폰트 추가
HarrySeop Jul 31, 2025
60d5468
🎨 [#179] Style: 카드 간격 조절
HarrySeop Jul 31, 2025
9d9c482
✨ [#174] Feat: 체험 페이지 등록 API 연결 & 수정시 체험 데이터 불러오기 연결
MyungJiwoo Jul 31, 2025
7c5f2c7
✨ [#174] Feat: 체험 수정 API 연결
MyungJiwoo Jul 31, 2025
9e9bf10
🎨 [#179] Style: 예약 카드 이미지 영역 수정
HarrySeop Jul 31, 2025
a5002f0
🐛 [#174] Fix: PopoverTrigger의 버튼 타입을 button으로 설정
MyungJiwoo Jul 31, 2025
c553994
🎨 [#179] Style: 글씨 통일
HarrySeop Jul 31, 2025
d170ceb
💄 [#177] Style: 마이페이지 UI 통일
Jul 31, 2025
429fdd6
🎨 [#179] Style: 카드 영역 내 요소 간격 조절
HarrySeop Jul 31, 2025
6680f30
Merge pull request #180 from What-Today-FE/refactor/HarrySeop/179
HarrySeop Jul 31, 2025
64236f3
♻️ [#174] Refactor: TimePicker, DatePicker에 disabled 처리
MyungJiwoo Jul 31, 2025
2e717f8
🐛 [#174] Fix: DescriptionTextarea에 errorMessage 추가
MyungJiwoo Jul 31, 2025
c4427cb
♻️ [#174] Refactor: AddressInput 스타일 수정
MyungJiwoo Jul 31, 2025
c5b0fde
🐛 [#174] Fix: 디자인 시스템에서 Select 문서가 누락되어 라우터에 추가
MyungJiwoo Jul 31, 2025
d26010f
💄 [#177] Style: 메인페이지 UI 통일
Jul 31, 2025
042c35b
💄 [#177] Style: 로그인, 회원가입 페이지 UI 통일
Jul 31, 2025
aab3a4b
✨ [#174] Feat: 내 체험 등록 & 수정 UI 구성
MyungJiwoo Jul 31, 2025
fb3385e
🐛 [#174] Fix: 타입 오류 해결 & 날짜, 시간 Input의 UI 오류 해결
MyungJiwoo Jul 31, 2025
27d5e0f
♻️ [#181] Refactor: 함수를 컴포넌트 외부로 분리
HarrySeop Jul 31, 2025
3cd9cfd
🐛 [#174] Fix: 빌드 오류 해결
MyungJiwoo Jul 31, 2025
40e42c0
♻️ [#174] Refactor: 입력폼 UI 수정
MyungJiwoo Jul 31, 2025
3611cd6
♻️ [#174] Refactor: ScheduleInput 파일 분리
MyungJiwoo Jul 31, 2025
6effc98
Merge pull request #182 from What-Today-FE/refactor/HarrySeop/181
HarrySeop Jul 31, 2025
401b22e
Merge branch 'develop' into feat/kjhyun/177
HarrySeop Jul 31, 2025
9d77dbc
🔨 [#177] Fix: 미사용 변수 제거
Jul 31, 2025
483838c
♻️ [#174] Refactor: tanstack query로 리팩토링
MyungJiwoo Jul 31, 2025
4d3f4c0
🔨 [#177] Fix: 중복 코드 제거
Jul 31, 2025
4016e3b
Merge pull request #184 from What-Today-FE/feat/kjhyun/177
Taeil08 Jul 31, 2025
cf7f981
✨ [#174] Feat: 상세페이지에 수정, 삭제 드롭다운 메뉴 추가
MyungJiwoo Jul 31, 2025
81d381c
✨ [#174] Feat: 체험관리 페이지와 상세 페이지 연결
MyungJiwoo Jul 31, 2025
04f52b2
✨ [#174] Feat: 예약 내역 페이지와 상세 페이지 연결
MyungJiwoo Jul 31, 2025
1e89ac9
♻️ [#174] Refactor: 코드레빗 코드리뷰 반영
MyungJiwoo Jul 31, 2025
23a4fb9
Merge branch 'develop' into feat/mongdiwoo/174
HarrySeop Aug 1, 2025
97fe717
🔨 [#174] Fix: 빌드 오류 해결 & 디자인 수정
HarrySeop Aug 1, 2025
786222c
Merge pull request #183 from What-Today-FE/feat/mongdiwoo/174
HarrySeop Aug 1, 2025
5c7aaf8
♻️ [#186] Refactor: 더보기 버튼 크기 수정 및 토스트 추가
HarrySeop Aug 1, 2025
0c063dc
✨ [#186] Feat: 본인 글 예약 못하는 기능 구현
HarrySeop Aug 1, 2025
28ec094
🐛 [#187] Fix: z-index 정리
MyungJiwoo Aug 1, 2025
2f8a7ba
♻️ [#186] Refactor: 예약 불가 메세지 통일
HarrySeop Aug 1, 2025
0757943
♻️[#188] Refactor: 메인페이지 QA반영
Taeil08 Aug 1, 2025
23a1cca
🐛 [#187] Fix: 예약 현황 캘린더에서 Select가 뜨지 않는 z-index 오류 해결
MyungJiwoo Aug 1, 2025
13b7e24
♻️[#188] Refactor: mainpage overflow-x-hidden 삭제
Taeil08 Aug 1, 2025
2714f8e
♻️ [#186] Refactor: 로그인 안한 유저 예약 못하게 변경
HarrySeop Aug 1, 2025
9d37c64
Merge pull request #189 from What-Today-FE/refactor/mongdiwoo/187
MyungJiwoo Aug 1, 2025
cbce62a
♻️ [#186] Refactor: 버튼 텍스트를 함수로 분리
HarrySeop Aug 1, 2025
1b8e7c0
♻️[#188] Refactor: 페이지네이션 수정 푸터 오늘뭐해 링크 제거
Taeil08 Aug 1, 2025
a0108a4
♻️[#188] Refactor: text 수정
Taeil08 Aug 1, 2025
8f3897b
♻️[#188] Refactor: text color 제거
Taeil08 Aug 1, 2025
b25595a
♻️ [#186] Refactor: 코드 리뷰 반영
HarrySeop Aug 1, 2025
ca20891
🐛[#188] Fix: 병합충돌해결
Taeil08 Aug 1, 2025
588d9e7
Merge pull request #190 from What-Today-FE/refactor/taeil/188
Taeil08 Aug 1, 2025
b46fd32
Merge pull request #191 from What-Today-FE/feat/HarrySeop/186
HarrySeop Aug 1, 2025
3180d49
✨ [#166] Feat: NotFoundLogo 추가
MyungJiwoo Aug 1, 2025
204cca2
✨ [#166] Feat: 404 에러 페이지 추가
MyungJiwoo Aug 1, 2025
4777c18
♻️[#192] Refactor: 예약내역 라디오 모바일일때 수정
Taeil08 Aug 1, 2025
1aa3d8c
♻️[#192] Refactor: 예약내역카드 모바일일때 컨텐트 영역 넓어짐 수정
Taeil08 Aug 1, 2025
7a5f714
📝 [#166] Docs: 디자인 문서 오타 수정
MyungJiwoo Aug 1, 2025
b77122d
♻️[#197] Refactor: 체험등록 카테고리 수정
Taeil08 Aug 1, 2025
8664e3f
Merge pull request #194 from What-Today-FE/feat/mongdiwoo/166
MyungJiwoo Aug 1, 2025
394e029
♻️[#197] Refactor: 라디오 value 재 수정
Taeil08 Aug 1, 2025
83e6101
🐛 [#195] Fix: 로그아웃시 모든 쿼리키 초기화
MyungJiwoo Aug 1, 2025
829ed7e
🐛 [#199] Fix: 카카오 로그인 403 에러 처리
MyungJiwoo Aug 1, 2025
d455e3b
Merge pull request #198 from What-Today-FE/refactor/taeil/197
Taeil08 Aug 1, 2025
e78d628
♻️ [#185] Refactor: 예약현황 페이지 Tanstack Query 적용
Aug 1, 2025
fb9293a
Merge branch 'develop' into refactor/kjhyunn/185
Aug 1, 2025
01ca93a
🔨 [#185] Fix: selectbox z-index 수정
Aug 1, 2025
3d4bfe6
✨ [#203] Feat: 회원가입시 이용약관 동의 추가
MyungJiwoo Aug 1, 2025
604cf68
♻️ [#203] Refactor: 비밀번호 유효성 검사에 통과하면 비밀번호 확인이 뜨도록 수정
MyungJiwoo Aug 1, 2025
409b705
🐛 [#203] Fix: 빌드 오류 해결
MyungJiwoo Aug 1, 2025
e627978
♻️[#200] Refactor: QA 반영
Taeil08 Aug 1, 2025
cc09dc4
♻️ [#185] Refactor: ReservationSheet에 tanstackQuery 적용, 실시간 반영 구현
Aug 1, 2025
8d07115
🔨 [#185] Fix: 에러 메세지 정리
Aug 2, 2025
9229270
🔨 [#185] Fix: 미사용 변수 제거
Aug 2, 2025
9672319
📦️ [#193] Chore: Network까지 테스트 하도록 수정
HarrySeop Aug 2, 2025
de453e2
✨ [#193] Feat: 번역을 위한 번역 가능 국가 추가
HarrySeop Aug 2, 2025
a2f521a
✨ [#193] Feat: 국기 svg를 반환하는 국기 아이콘 컴포넌 추가
HarrySeop Aug 2, 2025
f497f13
✨ [#193] Feat: 구글 번역 기능 추가
HarrySeop Aug 2, 2025
612b1a2
♻️[#193] Refactor: 플로팅 버튼 레이아웃에 추가
HarrySeop Aug 2, 2025
93a5822
♻️ [#203] Refactor: label과 checkbox를 id로 연결
MyungJiwoo Aug 2, 2025
120f18f
🔨 [#185] Fix: 오타 수정
Aug 2, 2025
35da477
🔨 [#185] Fix: reservationCalendar 기존 prop 주석처리
Aug 2, 2025
4c33a7b
Merge pull request #209 from What-Today-FE/feat/mongdiwoo/165
MyungJiwoo Aug 2, 2025
3683838
Merge pull request #206 from What-Today-FE/refactor/taeil/200
Taeil08 Aug 2, 2025
a9bc440
Merge pull request #196 from What-Today-FE/refactor/taeil/192
HarrySeop Aug 2, 2025
08ae5b7
Merge pull request #207 from What-Today-FE/feat/HarrySeop/193
HarrySeop Aug 2, 2025
094c65b
♻️[#208] Refactor: 카드 랜더링 개수 20에서 100개로 수정 및 초기 카드 랜더링 개수 수정
Taeil08 Aug 2, 2025
40d743e
Merge pull request #201 from What-Today-FE/fix/mongdiwoo/199
MyungJiwoo Aug 2, 2025
692a454
Merge pull request #202 from What-Today-FE/fix/mongdiwoo/195
MyungJiwoo Aug 2, 2025
e499f65
Merge pull request #204 from What-Today-FE/feat/mongdiwoo/203
MyungJiwoo Aug 2, 2025
7d39d61
♻️[#211] Refactor: 후기가 작성된 게시물도 표기하도록 수정
HarrySeop Aug 2, 2025
fab5b30
✨ [#210] Feat: MypageMain 생성, Header 연결
Aug 2, 2025
0cf7dbd
🐛 [#212] Fix: 새로고침해야만 새로운 알림이 업데이트 되는 오류 해결
MyungJiwoo Aug 2, 2025
8ec38f6
✨ [#212] Feat: 체험 등록시 반복 일정 추가 기능 구현
MyungJiwoo Aug 2, 2025
8f46d2d
✨ [#210] Feat: 마이페이지 메인 기본 UI 구현
Aug 2, 2025
fdc26c7
Merge branch 'develop' into feat/kjhyun/210
Aug 2, 2025
2a566bf
♻️ [#210] Refactor: 마이-메인페이지 경로 변경, sidebar 수정
Aug 2, 2025
20f1a75
♻️ [#212] Refactor: 반복 일정 추가의 반복 유형은 매주로 고정
MyungJiwoo Aug 2, 2025
7c5ac1f
♻️[#211] Refactor: 로딩 상태 변경 + 상태별 데이터 없음 문구 변경
HarrySeop Aug 2, 2025
8ec3534
♻️[#211] Refactor: 후기 작성할 때 에러 발생시 서버 에러 메세지로 변경
HarrySeop Aug 2, 2025
dad0ba5
♻️ [#212] Refactor: DatePicker에서 날짜를 선택하면 팝오버가 닫히도록 수정
MyungJiwoo Aug 2, 2025
4b81926
♻️[#211] Refactor: 모달간 데이터 공유 이슈 해결
HarrySeop Aug 2, 2025
cecdb2a
🎨 [#211] Style: 별점 컴포넌트 & 후기 모달 디자인 수정
HarrySeop Aug 2, 2025
1473876
♻️ [#212] Refactor: 모바일일때는 반복 일정 추가 팝업에서 DateInput이 수직으로 배치
MyungJiwoo Aug 2, 2025
7b53f7b
✨ [#212] Feat: 로그인하지 않은 사용자는 체험 등록/수정 페이지 접근 불가
MyungJiwoo Aug 2, 2025
c253ec7
🐛 [#212] Fix: 디자인 문서에서 사용하지 않는 변수로 발생하는 빌드 오류 임시 해결
MyungJiwoo Aug 2, 2025
4a48e08
🔨 [#211] Fix: 오타 수정
HarrySeop Aug 2, 2025
7043017
♻️ [#212] Refactor: 체험 설명 textarea 높이 수정
MyungJiwoo Aug 2, 2025
111d31d
♻️ [#212] Refactor: 캘린더에서 선택된 날의 UI 변경
MyungJiwoo Aug 2, 2025
64299e8
🐛 [#212] Fix: 반복 일정 추가시 시작 시간보다 종료 시간이 늦으면 에러 토스트 메시지 띄움
MyungJiwoo Aug 2, 2025
8897373
♻️ [#212] Refactor: 반복 일정 로직을 별도 컴포넌트로 분리
MyungJiwoo Aug 2, 2025
b6b59da
🐛 [#212] Fix: 반복 일정 추가시 시작 날짜보다 종료 날짜가 늦으면 에러 토스트 메시지 띄움
MyungJiwoo Aug 2, 2025
43aa6c7
♻️ [#212] Refactor: 토끼 리뷰 반영
MyungJiwoo Aug 2, 2025
ab379bb
🐛 [#212] Fix: 체험 수정 에러 메시지 토스트로 출력
MyungJiwoo Aug 2, 2025
8022426
🐛 [#212] Fix: 빌드 오류 해결
MyungJiwoo Aug 2, 2025
de89368
♻️[#208] Refactor: 아이템개수 20개 제한 수정 메인페이지 usememo로 코드 최적화
Taeil08 Aug 2, 2025
360b9f6
♻️[#208] Refactor: 쿼리키 수정
Taeil08 Aug 2, 2025
3016707
Merge pull request #215 from What-Today-FE/refactor/taeil/208
Taeil08 Aug 2, 2025
6e09877
Merge pull request #205 from What-Today-FE/refactor/kjhyunn/185
kjhyun0830 Aug 2, 2025
a9163f1
✨ [#210] Feat: 마이-메이페이지 다가오는 일정 데이터 연결
Aug 2, 2025
6794d08
Merge branch 'develop' into feat/kjhyun/210
Aug 2, 2025
9d4e06b
♻️[#216] Refactor: 메인카드 카테고리 추가 및 높이수정
Taeil08 Aug 2, 2025
175a686
Merge pull request #214 from What-Today-FE/fix/mongdiwoo/212
MyungJiwoo Aug 2, 2025
fd31cb6
Merge pull request #217 from What-Today-FE/refactor/taeil/216
Taeil08 Aug 2, 2025
cd00b99
✨ [#210] Feat: 마이-메인페이지 SummaryCard 데이터 연결
Aug 2, 2025
461d9f9
✨ [#210] Feat: 모집 중인 체험 데이터 연결
Aug 2, 2025
8c5009a
✨ [#210] Feat: 각 카드 클릭 시 상세 페이지 이동 기능 구현
Aug 2, 2025
ac67e71
Merge pull request #213 from What-Today-FE/refactor/HarrySeop/211
HarrySeop Aug 2, 2025
59a77fe
♻️[#218] Refactor: PC일때 예약 성공시 폼 초기화
HarrySeop Aug 2, 2025
9ac2b6a
♻️[#218] Refactor: 로딩, 데이터 없을 때 임시 처리
HarrySeop Aug 2, 2025
38c5020
♻️[#218] Refactor: 토스트 메세지 수정
HarrySeop Aug 2, 2025
6d8b3f4
♻️[#218] Refactor: 바텀바 영역 커짐에 따라서 플로팅 버튼 위치 수정
HarrySeop Aug 2, 2025
6f900a5
♻️ [#210] Refactor: 마이-메인페이지 컴포넌트 타입 강화
Aug 3, 2025
8af3de5
♻️[#222] Refactor: 라디오 애니메이션 제거
Taeil08 Aug 3, 2025
7140ba3
Merge pull request #223 from What-Today-FE/refactor/taeil/222
Taeil08 Aug 3, 2025
cc9a568
♻️[#218] Refactor: 모바일, 태블릿에서도 예약성공시 sheet 초기화
HarrySeop Aug 3, 2025
29331d4
✨ [#221] Feat: 체험관리 페이지 스켈레톤 UI 구현
Aug 3, 2025
8a805f0
💄 [#221] Style: 삭제 모달 UI 통일
Aug 3, 2025
694a400
Merge branch 'develop' into feat/kjhyun/210
Aug 3, 2025
c620d2e
🔨 [#210] Fix: 주석 제거
Aug 3, 2025
1be2c37
📝 [#210] Docs: 디자인 시스템 문서 수정
Aug 3, 2025
02f9df5
🔨 [#210] Fix: 미사용 변수 제거
Aug 3, 2025
f9eb6d0
Merge pull request #219 from What-Today-FE/feat/kjhyun/210
kjhyun0830 Aug 3, 2025
1ebbe50
Merge branch 'develop' into feat/kjhyun/221
Aug 3, 2025
458df7b
♻️ [#221] Refactor: 로그아웃 후 api 요청 문제 해결
Aug 3, 2025
4bbe49d
♻️[#218] Refactor: 바텀 시트에서 예약 관리되던 이슈를 해결
HarrySeop Aug 3, 2025
e972f9a
Merge pull request #220 from What-Today-FE/refactor/HarrySeop/218
HarrySeop Aug 3, 2025
b9c140d
✨ [#221] Feat: 예약현황 페이지 스켈레톤 UI 구현
Aug 3, 2025
3996fd6
🎨 [#226] Style: 구름 아이콘 추가
HarrySeop Aug 3, 2025
adb6578
✨[#224] Feat: 메인페이지 스켈레톤 구현
Taeil08 Aug 3, 2025
50c6adc
Merge pull request #227 from What-Today-FE/feat/HarrySeop/226
Taeil08 Aug 3, 2025
2f53775
💄 [#221] Style: 반응형 추가
Aug 3, 2025
a0f77f3
✨ [#230] Feat: 체험관리 페이지 토스트 적용
Aug 3, 2025
f782d7e
✨ [#230] Feat: 예약현황 페이지 토스트 적용
Aug 3, 2025
0031b43
✨ [#230] Feat: 예약 승인, 거절 시 캘린더 뱃지 자동반영 구현
Aug 3, 2025
f50abea
🎨 [#226] Style: 1인당 금액을 정보 섹션으로 분리
HarrySeop Aug 3, 2025
37047d7
🎨 [#226] Style: 설명 섹션 UI 통일
HarrySeop Aug 3, 2025
ed90283
🎨 [#226] Style: 정보, 예약 섹션 너비 줄이기
HarrySeop Aug 3, 2025
85a9dde
🎨 [#226] Style: PC 예약 섹션 UI 통일
HarrySeop Aug 3, 2025
038101b
🎨 [#226] Style: 시간 선택 디자인 수정
HarrySeop Aug 3, 2025
5d14453
🎨 [#226] Style: 시간 영역 길어지면 스크롤 생성
HarrySeop Aug 3, 2025
1054913
🎨 [#226] Style: 인원 선택 디자인 수정 및 UI 통일
HarrySeop Aug 3, 2025
0fc5c58
🎨 [#226] Style: 금액 길어져도 줄바꿈 안되도록 변경
HarrySeop Aug 3, 2025
43b893a
🎨 [#226] Style: 드롭다운 위치 변경
HarrySeop Aug 3, 2025
a5fcf62
🎨 [#226] Style: 바텀바 수정 및 UI 통일
HarrySeop Aug 3, 2025
93ab7af
🎨 [#226] Style: 태블릿 바텀시트 수정
HarrySeop Aug 3, 2025
2529589
🎨 [#226] Style: 모바일 바텀시트 수정
HarrySeop Aug 3, 2025
4dbe1d3
🎨 [#226] Style: 구분선 디자인 통일
HarrySeop Aug 4, 2025
de741cd
🎨 [#226] Style: 이미지 부분 테두리 색상 변경
HarrySeop Aug 4, 2025
5c81533
🎨 [#226] Style: 설명 영역 디자인 통일
HarrySeop Aug 4, 2025
7c58038
🎨 [#226] Style: 지도 디자인 수정
HarrySeop Aug 4, 2025
7784acf
🎨 [#226] Style: 리뷰 UI 통일
HarrySeop Aug 4, 2025
36cb25a
🎨 [#226] Style: 예약 상세페이지 스켈레톤 UI 반영
HarrySeop Aug 4, 2025
cc6b259
🎨 [#226] Style: 후기 없는 부분 NoResult 컴포넌트로 수정
HarrySeop Aug 4, 2025
bb13291
🎨 [#225] Style: 리뷰섹션에서 불필요한 Loading 제거
HarrySeop Aug 4, 2025
073f83a
Merge pull request #228 from What-Today-FE/feat/kjhyun/221
kjhyun0830 Aug 4, 2025
443b124
Merge pull request #229 from What-Today-FE/feat/taeil/224
Taeil08 Aug 4, 2025
20e1f03
Merge branch 'develop' into feat/kjhyun/230
Aug 4, 2025
9e80ed6
Merge pull request #231 from What-Today-FE/feat/kjhyun/230
kjhyun0830 Aug 4, 2025
e72a75c
Merge pull request #232 from What-Today-FE/refactor/HarrySeop/225
HarrySeop Aug 4, 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
4 changes: 2 additions & 2 deletions apps/what-today/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"dev": "vite --host",
"build": "pnpm --filter @what-today/design-system... build && tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
"preview": "vite preview --host"
},
"dependencies": {
"@hookform/resolvers": "^5.1.1",
Expand Down
2 changes: 2 additions & 0 deletions apps/what-today/src/apis/activities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import axiosInstance from './axiosInstance';

// ✅ 체험(Activity) 타입 정의 (category 추가)
export interface Activity {
createdAt?: string | number | Date;
id: number;
title: string;
price: number;
Expand All @@ -29,6 +30,7 @@ export const activityListSchema = z.array(
reviewCount: z.number(),
bannerImageUrl: z.string().url(),
category: z.string(),
createdAt: z.string(),
}),
);

Expand Down
43 changes: 42 additions & 1 deletion apps/what-today/src/apis/activityDetail.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { type ActivityWithSubImagesAndSchedules, activityWithSubImagesAndSchedulesSchema } from '@/schemas/activities';
import {
type ActivityWithSubImagesAndSchedules,
activityWithSubImagesAndSchedulesSchema,
type Schedules,
schedulesSchema,
} from '@/schemas/activities';
import { type ActivityReviewsResponse, activityReviewsResponseSchema } from '@/schemas/activityReview';
import {
type CreateReservationBodyDto,
Expand Down Expand Up @@ -26,6 +31,23 @@ export const fetchActivityReviews = async (activityId: number): Promise<Activity
return activityReviewsResponseSchema.parse(response.data);
};

/**
* @description 무한스크롤용 체험 리뷰 목록을 조회합니다.
* @param activityId 체험 ID
* @param page 페이지 번호 (기본값: 1)
* @param size 페이지 크기 (기본값: 10)
*/
export const fetchActivityReviewsInfinite = async (
activityId: number,
page: number = 1,
size: number = 10,
): Promise<ActivityReviewsResponse> => {
const response = await axiosInstance.get(`/activities/${activityId}/reviews`, {
params: { page, size },
});
return activityReviewsResponseSchema.parse(response.data);
};

/**
* @description 체험 예약 생성 요청
* @param activityId 체험 ID
Expand All @@ -38,3 +60,22 @@ export const createReservation = async (
const response = await axiosInstance.post(`/activities/${activityId}/reservations`, body);
return reservationResponseSchema.parse(response.data);
};

// ✅ 체험 예약 가능일 리스트 조회 시 사용되는 파라미터 타입
export interface ReservationAvailableScheduleParams {
year: string;
month: string;
}

/**
* @description 체험 예약 가능일 리스트를 불러옵니다.
* @param activityId 체험 ID
* @returns ActivityWithSubImagesAndSchedules 타입의 체험 상세 데이터
*/
export const fetchReservationAvailableSchedule = async (
activityId: number,
params: ReservationAvailableScheduleParams,
): Promise<Schedules> => {
const response = await axiosInstance.get(`/activities/${activityId}/available-schedule`, { params });
return schedulesSchema.parse(response.data);
};
52 changes: 51 additions & 1 deletion apps/what-today/src/apis/experiences.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { type CreateActivityBody, type UpdateMyActivityBody } from '@/schemas/experiences'; // 스키마 정의된 파일 기준 경로로 수정하세요
import {
type ActivityWithSchedulesResponse,
type CreateActivityBody,
type UpdateMyActivityBody,
} from '@/schemas/experiences';

import axiosInstance from './axiosInstance';

Expand All @@ -15,3 +19,49 @@ export const patchActivity = async (activityId: number, body: UpdateMyActivityBo

// createActivityBodySchema, parse를 여기서 관리하지 말고 페이지 handleSubmit에서 관리
// updateMyActivityBodySchema,

/**
* @description 체험 이미지 url 생성
*
* @param file 업로드할 체험 이미지 파일
* @returns 체험 이미지 url (string)
*/
export const uploadImage = async (file: File): Promise<{ file: string }> => {
const formData = new FormData();
formData.append('image', file);

const response = await axiosInstance.post('activities/image', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
});

return { file: response.data.activityImageUrl };
};

/**
* @description 체험 등록
*
* @param body 등록할 체험 데이터
* @returns 체험 등록 데이터
*/
export const postExperiences = async (body: CreateActivityBody): Promise<ActivityWithSchedulesResponse> => {
const response = await axiosInstance.post('activities', body);

return response.data;
};

/**
* @description 체험 수정
*
* @param body 등록할 체험 수정 데이터
* @returns 체험 수정 데이터
*/
export const patchExperiences = async (
body: UpdateMyActivityBody,
activityId?: string,
): Promise<ActivityWithSchedulesResponse> => {
const response = await axiosInstance.patch(`my-activities/${activityId}`, body);

return response.data;
};
7 changes: 2 additions & 5 deletions apps/what-today/src/apis/myActivities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import {
type monthlyScheduleParam,
type monthlyScheduleResponse,
monthlyScheduleResponseSchema,
type reservation,
reservationSchema,
type timeSlotReservationParam,
type timeSlotReservationResponse,
timeSlotReservationResponseSchema,
Expand Down Expand Up @@ -50,9 +48,8 @@ export async function patchReservationStatus(
activityId: number,
reservationId: number,
status: ManageableReservationStatus,
): Promise<reservation> {
const response = await axiosInstance.patch(`/my-activities/${activityId}/reservations/${reservationId}`, { status });
return reservationSchema.parse(response.data);
): Promise<void> {
await axiosInstance.patch(`/my-activities/${activityId}/reservations/${reservationId}`, { status });
}

export const deleteMyActivity = async (activityId: number) => {
Expand Down
Empty file.
34 changes: 34 additions & 0 deletions apps/what-today/src/components/FlagIcon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React from 'react';

interface FlagIconProps {
flagCode: string;
alt?: string;
className?: string;
size?: 'sm' | 'md' | 'lg';
}

const FlagIcon: React.FC<FlagIconProps> = ({ flagCode, alt = 'Flag', className = '', size = 'md' }) => {
const sizeClasses = {
sm: 'w-30 h-30',
md: 'w-40 h-40',
lg: 'w-50 h-50',
};

const flagUrl = `https://cdn.weglot.com/flags/square/${flagCode}.svg`;

return (
<img
alt={alt}
className={`inline-block rounded-lg object-cover ${sizeClasses[size]} ${className}`}
src={flagUrl}
onError={(e) => {
// 이미지 로드 실패 시 기본 아이콘으로 대체
const target = e.target as HTMLImageElement;
target.src =
'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><path d="m9 9 5 12 1.5-2.75L17 16l-5-12-1.5 2.75L9 9z"/></svg>';
}}
/>
);
};

export default FlagIcon;
Loading