-
Notifications
You must be signed in to change notification settings - Fork 2
[feat] 도면 선택 페이지 UI 및 내부 비즈니스 로직 구현 + 일부 공컴 수정 #494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jstar000
wants to merge
47
commits into
develop
Choose a base branch
from
feat/space-select-flow/#485
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 38 commits
Commits
Show all changes
47 commits
Select commit
Hold shift + click to select a range
4b25556
feat: 도면 선택 페이지 인터페이스 구현
jstar000 83a0d15
feat: FloorPlan 스텝 타입, 더미 데이터, 스토어, 훅 구현
jstar000 ee3ca1a
fix: 여러 시점 로직 임시 적용
jstar000 7b05776
fix: PageLayout에 v2 navbar 반영
jstar000 8c792c6
fix: RoomTypeCard 반응형 적용
jstar000 18cbe6b
fix: 바텀시트 헤더 css 수정
jstar000 fc2be90
fix: height 상속 체인 추가
jstar000 80a9999
feat: 도면선택 바텀시트 구현
jstar000 eccc3b0
feat: 도면선택 그리드 구현
jstar000 b42349b
fix: 바텀시트 컴포넌트 피그마 디자인 반영
jstar000 2c46c12
feat: RecentFloorPlanSheet 구현
jstar000 37b5040
feat: FloorPlanSelectStep 구현
jstar000 3ae9f83
fix: 도면 선택 훅 수정
jstar000 eac8f48
fix: PreviewCard minWidth 수정
jstar000 a5f92b8
feat: 필터칩 다중선택 로직 추가
jstar000 05ff8ae
feat: 필터칩 다중선택 시 필터칩 텍스트 변경
jstar000 9901293
fix: 필터칩 선택 훅 수정
jstar000 f234880
feat: 필터칩 가로스크롤 적용
jstar000 4c49fbf
feat: 도면 view 개수에 따라 PreviewCard 버튼 분기처리
jstar000 4d2527e
chore: 주석 추가
jstar000 0d9ff21
fix: floorPlan 타입 수정
jstar000 f5c568e
feat: ActionButton 공통 스타일 추가 및 테스트 파일 정리
jstar000 7c933b1
Merge branch 'develop' into feat/space-select-flow/#485
jstar000 3a75799
feat: ActionButton에 fullWidth props 추가
jstar000 28d4e2c
fix: FilterSheet ActionButton 공컴 적용
jstar000 9195853
fix: FloorPlanSheet ActionButton 공컴 적용
jstar000 46ad1a1
fix: RecentFloorPlanSheet 삭제 (FloorPlanSheet로 통일)
jstar000 4fcd5fe
feat: 최근 생성 공간 sheet 렌더링 시 토스트 알림 추가
jstar000 41706fb
feat: 임시 ActionButton 삭제
jstar000 8b0e8d4
fix: FloorPlanSelectGrid, BottomSheet, TitleNavBar에 v2 아이콘 적용
jstar000 4b3847b
fix: ActionButton 불필요한 span 제거
jstar000 283d061
fix: 아이콘 수정
jstar000 21ff65c
fix: 바텀시트 Drawer.Overlay -> 커스텀 div로 변경(데스크탑 환경 고려)
jstar000 3364eea
fix: Chip 컴포넌트 수정
jstar000 10e6961
fix: 불필요한 css 제거
jstar000 36128e2
fix: RoomTypeSection의 RoomTypeCard 너비 고정
jstar000 6c2fc84
feat: 필터 결과가 없을 때 UI 추가
jstar000 9fe788f
refactor: 도면 Swiper 적용
jstar000 da4acec
refactor: FilterCategory id 타입 좁히기
jstar000 992bfd4
refactor: useFloorPlanSelect useMemo, useCallback 제거 및 주석 추가
jstar000 57ba60f
refactor: useFloorPlanSelect 훅 수정
jstar000 0fe3e0e
refactor: 도면 선택 상태 초기값 상수로 추출 및 재사용
jstar000 0d1c79e
chore: 테스트 페이지 추가
jstar000 32f86ae
fix: 최근 도면 바텀시트 좌우반전 하드코딩 제거
jstar000 e53097c
chore: css 수정
jstar000 ef98f2b
fix: 미사용 코드 제거
jstar000 31b9081
fix: 미사용 import 제거
jstar000 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,6 +2,8 @@ import { create } from 'zustand'; | |
|
|
||
| import type { CompletedHouseInfo } from '../types/funnel/houseInfo'; | ||
|
|
||
| // TODO: FunnelStore 수정 | ||
| // moodBoard, activityInfo 스텝은 이미지 생성에 필요할 수도 있고 아닐 수도 있음 | ||
|
Comment on lines
+5
to
+6
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 불확실한 요구사항 TODO는 스토어 계약으로 명시해 주세요. Line 5~6의 TODO처럼 필수 여부가 미정인 상태를 주석으로만 남기면, 🤖 Prompt for AI Agents |
||
| interface FunnelStore { | ||
| // 각 스텝 데이터(각 스텝 별 요구되는 데이터만 저장) | ||
| houseInfo: CompletedHouseInfo | null; | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,241 @@ | ||
| import type { | ||
| FilterCategory, | ||
| FloorPlanData, | ||
| FloorPlanDetailView, | ||
| RecentFloorPlanData, | ||
| } from '../types/floorPlan'; | ||
|
|
||
| export const DUMMY_FILTER_CATEGORIES: FilterCategory[] = [ | ||
| { | ||
| id: 'residenceType', | ||
| label: '주거 형태', | ||
| options: [ | ||
| { id: 'ALL', label: '전체' }, | ||
| { id: 'OFFICETEL', label: '오피스텔' }, | ||
| { id: 'VILLA', label: '빌라/다세대' }, | ||
| { id: 'APARTMENT', label: '아파트' }, | ||
| { id: 'ETC', label: '그 외' }, | ||
| ], | ||
| }, | ||
| { | ||
| id: 'layoutType', | ||
| label: '구조', | ||
| options: [ | ||
| { id: 'ALL', label: '전체' }, | ||
| { id: 'OPEN_ONE_ROOM', label: '오픈형 원룸' }, | ||
| { id: 'SEPARATE_ONE_ROOM', label: '분리형 원룸' }, | ||
| { id: 'DUPLEX', label: '복층형' }, | ||
| { id: 'TWO_ROOM', label: '투룸' }, | ||
| { id: 'THREE_ROOM_PLUS', label: '쓰리룸 이상' }, | ||
| { id: 'ETC', label: '그 외' }, | ||
| ], | ||
| }, | ||
| { | ||
| id: 'areaSize', | ||
| label: '평형', | ||
| options: [ | ||
| { id: 'ALL', label: '전체' }, | ||
| { id: 'UNDER_4', label: '4평 이하' }, | ||
| { id: 'FROM_5_TO_10', label: '5-10평' }, | ||
| { id: 'TENS', label: '10평대' }, | ||
| { id: 'TWENTIES', label: '20평대' }, | ||
| { id: 'OVER_30', label: '30평 이상' }, | ||
| ], | ||
| }, | ||
| ]; | ||
|
|
||
| export const DUMMY_FLOOR_PLANS: FloorPlanData[] = [ | ||
| { | ||
| id: 1, | ||
| name: '일자형 원룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=1', | ||
| isLatest: true, | ||
| residenceType: 'OFFICETEL', | ||
| layoutType: 'OPEN_ONE_ROOM', | ||
| areaSize: 'FROM_5_TO_10', | ||
| }, | ||
| { | ||
| id: 2, | ||
| name: '분리형 원룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=2', | ||
| isLatest: false, | ||
| residenceType: 'VILLA', | ||
| layoutType: 'SEPARATE_ONE_ROOM', | ||
| areaSize: 'TENS', | ||
| }, | ||
| { | ||
| id: 3, | ||
| name: 'ㄱ자형 투룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=3', | ||
| isLatest: false, | ||
| residenceType: 'APARTMENT', | ||
| layoutType: 'TWO_ROOM', | ||
| areaSize: 'TENS', | ||
| }, | ||
| { | ||
| id: 4, | ||
| name: '복층형 쓰리룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=4', | ||
| isLatest: false, | ||
| residenceType: 'OFFICETEL', | ||
| layoutType: 'THREE_ROOM_PLUS', | ||
| areaSize: 'TWENTIES', | ||
| }, | ||
| { | ||
| id: 5, | ||
| name: '오픈형 원룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=5', | ||
| isLatest: false, | ||
| residenceType: 'OFFICETEL', | ||
| layoutType: 'OPEN_ONE_ROOM', | ||
| areaSize: 'FROM_5_TO_10', | ||
| }, | ||
| { | ||
| id: 6, | ||
| name: '소형 원룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=6', | ||
| isLatest: false, | ||
| residenceType: 'ETC', | ||
| layoutType: 'OPEN_ONE_ROOM', | ||
| areaSize: 'UNDER_4', | ||
| }, | ||
| { | ||
| id: 7, | ||
| name: '복층형 투룸', | ||
| imageUrl: 'https://placehold.co/164x164?text=7', | ||
| isLatest: false, | ||
| residenceType: 'VILLA', | ||
| layoutType: 'DUPLEX', | ||
| areaSize: 'TENS', | ||
| }, | ||
| { | ||
| id: 8, | ||
| name: '대형 아파트', | ||
| imageUrl: 'https://placehold.co/164x164?text=8', | ||
| isLatest: false, | ||
| residenceType: 'APARTMENT', | ||
| layoutType: 'THREE_ROOM_PLUS', | ||
| areaSize: 'OVER_30', | ||
| }, | ||
| ]; | ||
|
|
||
| // 도면 상세 뷰 더미 (카드 클릭 시 반환, 추후 API 교체) | ||
| // key: floorPlanId → value: FloorPlanDetailView[] | ||
| export const DUMMY_FLOOR_PLAN_DETAILS: Record<number, FloorPlanDetailView[]> = { | ||
| 1: [ | ||
| { | ||
| id: 1, | ||
| name: '일자형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=1-A', | ||
| equilibrium: '5-10평', | ||
| view: '정면 뷰', | ||
| }, | ||
| { | ||
| id: 1, | ||
| name: '일자형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=1-B', | ||
| equilibrium: '5-10평', | ||
| view: '창가 뷰', | ||
| }, | ||
| ], | ||
| 2: [ | ||
| { | ||
| id: 2, | ||
| name: '분리형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=2-A', | ||
| equilibrium: '10평대', | ||
| view: '정면 뷰', | ||
| }, | ||
| ], | ||
| 3: [ | ||
| { | ||
| id: 3, | ||
| name: 'ㄱ자형 투룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=3-A', | ||
| equilibrium: '10평대', | ||
| view: '정면 뷰', | ||
| }, | ||
| { | ||
| id: 3, | ||
| name: 'ㄱ자형 투룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=3-B', | ||
| equilibrium: '10평대', | ||
| view: '창가 뷰', | ||
| }, | ||
| { | ||
| id: 3, | ||
| name: 'ㄱ자형 투룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=3-C', | ||
| equilibrium: '10평대', | ||
| view: '주방 뷰', | ||
| }, | ||
| ], | ||
| 4: [ | ||
| { | ||
| id: 4, | ||
| name: '복층형 쓰리룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=4-A', | ||
| equilibrium: '20평대', | ||
| view: '정면 뷰', | ||
| }, | ||
| ], | ||
| 5: [ | ||
| { | ||
| id: 5, | ||
| name: '오픈형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=5-A', | ||
| equilibrium: '5-10평', | ||
| view: '정면 뷰', | ||
| }, | ||
| { | ||
| id: 5, | ||
| name: '오픈형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=5-B', | ||
| equilibrium: '5-10평', | ||
| view: '창가 뷰', | ||
| }, | ||
| ], | ||
| 6: [ | ||
| { | ||
| id: 6, | ||
| name: '소형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=6-A', | ||
| equilibrium: '4평 이하', | ||
| view: '정면 뷰', | ||
| }, | ||
| ], | ||
| 7: [ | ||
| { | ||
| id: 7, | ||
| name: '복층형 투룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=7-A', | ||
| equilibrium: '10평대', | ||
| view: '정면 뷰', | ||
| }, | ||
| ], | ||
| 8: [ | ||
| { | ||
| id: 8, | ||
| name: '대형 아파트', | ||
| imageUrl: 'https://placehold.co/343x343?text=8-A', | ||
| equilibrium: '30평 이상', | ||
| view: '정면 뷰', | ||
| }, | ||
| { | ||
| id: 8, | ||
| name: '대형 아파트', | ||
| imageUrl: 'https://placehold.co/343x343?text=8-B', | ||
| equilibrium: '30평 이상', | ||
| view: '창가 뷰', | ||
| }, | ||
| ], | ||
| }; | ||
|
|
||
| // 최근 생성 도면 (별도 API 응답) | ||
| export const DUMMY_RECENT_FLOOR_PLAN: RecentFloorPlanData | null = { | ||
| id: 1, | ||
| name: '일자형 원룸', | ||
| imageUrl: 'https://placehold.co/343x343?text=Recent', | ||
| equilibrium: '5-10평', | ||
| view: '정면 뷰', | ||
| }; |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.