← Cockpit Wireframes
위저드 내비게이션 — 결정 보드
Approved — build queue
Venue Finder · 코트 찾기
ArchiveStrip Map · 세션 스트립 전체 시나리오Headers · 헤더 아이콘Compaction — 일정 · 코트 · 스코어카드Compaction — 클럽 상세 · 홈Compaction — 기록 · 프로필Live anchor — 진행 중 밴드Density · 카드 밀도토스트 — 리디자인 제안위저드 내비게이션 — 결정 보드드래프트 복원 — 무음 복원클럽 조 편성 — 모델 결정 보드Session Detail — Redesign · 일정Venue Detail — Redesign · 테니스장Profile Detail — Redesign · 프로필Tournament Detail — Redesign · 대항전Applicant Detail — Redesign · 가입 심사Canvas Migration — 회비 · 멤버 · 규칙Record Detail — Redesign · 기록Venue Filters · 코트 필터 재구성
Decided 2026-08-15 — shipped; kept as the decision record
Interactive kit · grounded in code

위저드 내비게이션 — 결정 보드

🛠️
확정 2026-08-15 — 구현 반영3번째 개편 = 결정 법칙 확정 — 이 보드는 위저드 푸터/헤더의 소유권을 한 번 정하기 위한 것이며, 확정 전까지 wizard-shell.tsx는 다시 손대지 않는다.
1
현행 + 이력푸터가 세 번째로 바뀌려는 이유
현재 shipped 푸터 · wizard-shell.tsx :255-317
건너뛰기
다음
48pt 아이콘 전용content-hug ghost 텍스트flex-1 primary
헤더는 모든 단계에서 동일한 ✕ (dismiss) — 단계별 조건부 없음. 뒤로 이동은 오직 푸터의 48pt 아이콘이 담당한다.
이력
가중 1:2 채움형2026-08-08
Toss/배민 관례 주장 — 근거 미검증
아이콘/허그/플렉스 v22026-08-14
'비례가 아니라 구조로' — 현재 shipped
이번 결정결정 대기
연구 기반, 법칙으로 고정
⚠️canon/wizards.md는 아직 ①(가중 2:3 페어)을 문서화 중 — 드리프트. create-club.jsx 와이어프레임의 로컬 WizardFootFull 역시 2026-08-08 주석과 함께 ①을 미러링한다 — 두 번째 드리프트 지점. 공통 수정 §5의 re-sync 항목이 이 둘을 해소한다.
2
Option A · 현행 v2 유지 + 보강구조는 손대지 않는다
A현행 v2 유지 + 보강
건너뛰기
다음
구조는 유지, 아래 공통 수정(§5)만 적용문제: 푸터에 시각 무게 3종(아이콘·텍스트·필드) 공존문제: 건너뛰기 register 애매 — 앱 내 다른 스킵(온보딩)과 위치가 다르다
3
Option B · 토스형 단일 CTA 푸터이동과 이탈을 헤더로 옮긴다
B단일 CTA 푸터★ 추천
이탈 확인
1 / 6
1단계 — ✕ + 이탈 확인
건너뛰기
3 / 6
2단계 이상 — 헤더 백 + 건너뛰기
클럽 이름을 입력해주세요
다음
헤더 왼쪽: 2단계 이상은 ChevronLeft(뒤로), 1단계는 ✕ + 이탈 확인 다이얼로그 — 지금은 숨어 있던 하드웨어 백 계약이 눈에 보이게 된다. 헤더 오른쪽: 건너뛰기(스킵 가능 단계만, onboarding-value-props.tsx가 이미 쓰는 그 관용구). 진행 세그먼트 + 카운트는 그대로. 푸터는 전폭 primary + primaryHint만 남는다.
Toss CTA 철학 — 화면마다 단 하나의 확신 CTA (toss.tech 인용)
건너뛰기 위치가 앱 전체에서 하나로 통일 — 온보딩과 같은 자리
하드웨어 백 = 헤더 백 미러 (3개 위저드 전부, 단 하나의 이동 소유자)
푸터 시각 무게 1종 — primary만
4
Option C · 절충백만 푸터에 남긴다
C절충 — 백은 푸터, 스킵은 헤더
다음
푸터는 48pt 아이콘 back + full-flex primary 2슬롯 그대로. 건너뛰기만 헤더 오른쪽으로 옮긴다 — B와 스킵 위치는 같지만, 이동(뒤로)은 여전히 푸터 소유.문제: 백 이동이 부담스러우면 — 하드웨어 백과 푸터 아이콘이 여전히 별개다
5
공통 수정어느 안이 이기든 적용 — A/B/C와 독립
키보드 회피OTA 안전
KeyboardAvoidingView(기존 primitive)만 사용 — KeyboardStickyView는 네이티브 의존성이라 EAS 창구로 연기
하드웨어 백 계약 통일
지금은 create-club만 이 계약을 갖는다 — create-session·onboarding도 같은 헤더 소유권으로 맞춘다
canon/wizards.md + create-club 와이어프레임 re-sync
둘 다 ①(가중 2:3/1:2)을 문서화 중 — 확정된 법칙으로 갱신
마지막 단계 CTA는 라벨 교체만
색·모양은 동일하게 유지 — Toss식 절제, '확인'을 특별한 색으로 강조하지 않는다
진행 표시는 탭-내비게이션 세그먼트 유지
3-6단계 권고보다 기능 우선 — onStepPress/maxNavigableStep 계약은 그대로
6
비교
비교
A
B
C
스킵 발견성
푸터 안 3종 중 하나 — 시선 분산
헤더 우상단 고정 — 앱 전체 관용구와 일치
헤더로 이동 — B와 동일 위치
푸터 시각 무게
3종 공존 (아이콘+텍스트+필드)
1종 — primary만
2종 — 아이콘 back + primary
Toss 정합
부분적 — 스킵이 여전히 푸터에 남는다
완전 — 화면당 단일 확신 CTA
부분적 — 백이 여전히 푸터에 남는다
하드웨어 백 일치
헤더 ✕(dismiss) ≠ 푸터 아이콘(back) — 이중 개념
헤더가 유일한 이동 소유자 — 하드웨어 백과 1:1
여전히 이중 개념 — 헤더와 푸터가 따로 논다
앱 내 일관성
온보딩 스킵 관용구와 위치가 다르다
onboarding-value-props.tsx와 동일 위치·문법
스킵만 일치, 백은 여전히 불일치
7
결론
확정B(토스형 단일 CTA 푸터) + 공통 수정 전부
A는 지금의 3종 공존 문제를 그대로 남기고, C는 이동만 절반 옮겨 이중 백 개념을 해소하지 못한다 — B만이 헤더/푸터 각각에 하나의 일 하나씩을 준다.
결정 법칙 (초안 — 오너 확정 대기)"위저드 푸터는 단일 CTA만 소유한다. 이동(뒤로)과 이탈(건너뛰기)은 헤더가 소유한다."
Spec (grounding, anatomy)

설계 제안 — 아직 구현되지 않음. 3개 위저드(create-club · create-session · onboarding)가 공유하는 wizard-shell.tsx 헤더/푸터의 소유권을 정하는 결정 보드 — 세 번째 개편이 되기 전에 법칙을 고정한다.

grounded in 2 source file(s)
packages/ui/src/wizard-shell.tsxpackages/features/onboarding/src/onboarding-value-props.tsx