From dda7b0e16a2ecf8f6b20ce6514378ba677546a8d Mon Sep 17 00:00:00 2001 From: gahusb Date: Tue, 28 Apr 2026 04:08:35 +0900 Subject: [PATCH] =?UTF-8?q?style(mypage):=20=EB=B8=8C=EB=9E=9C=EB=93=9C=20?= =?UTF-8?q?=EB=B8=94=EB=A3=A8=20=E2=86=92=20=EB=B3=B4=EB=9D=BC/=EC=8A=AC?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=ED=8A=B8=20=EC=9D=BC=EA=B4=84=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20=EB=A7=88=EC=9D=B4=EA=B7=B8=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=85=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Liquid Glass 메인 surface와 톤 정렬: - 본문 배경 #f0f5ff → slate-50 - 액센트 #1a56db → violet-600 (탭 active, 버튼, 링크) - 카드 보더 #dbe8ff → slate-200 - 다크 카드(프로젝트 헤더) #04102b → #060e20 (kx-surface 일관) - 강조 박스 blue-50/200 → violet-50/200 - 다크 위 텍스트 blue-300/60 → white/50 등 - 탭 button min-w-[100px] 추가 (모바일 wrap 시 텍스트 잘림 방지) 의미 색(emerald/orange/amber/red/rose/pink/cyan/sky)는 시그널이므로 보존. 프로젝트 헤더 in_progress 상태 핀은 sky 계열로 이전(브랜드 블루 잔존 제거). Task 4에서 추가된 새 코드(AI 스튜디오 카드 등)도 함께 마이그레이션. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/mypage/page.tsx | 146 ++++++++++++++++++++++---------------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/app/mypage/page.tsx b/app/mypage/page.tsx index 6a4eb58..eda9f27 100644 --- a/app/mypage/page.tsx +++ b/app/mypage/page.tsx @@ -268,8 +268,8 @@ export default function MyPage() { if (loading) { return ( -
-
+
+
); } @@ -293,7 +293,7 @@ export default function MyPage() { ]; return ( -
+
{/* 텔레그램 가이드 모달 */} {showTelegramGuide && ( setShowTelegramGuide(false)} /> @@ -328,15 +328,15 @@ export default function MyPage() {
{/* 탭 */} -
+
{tabs.map((t) => (
)} {/* 텔레그램 연동 카드 */} -
-

-
+
+

+
텔레그램 알림 연동
-
+
연결됨
@@ -491,14 +491,14 @@ export default function MyPage() {
-
연결 안 됨
+
연결 안 됨
텔레그램으로 번호를 바로 받아보세요
@@ -506,37 +506,37 @@ export default function MyPage() { )}

-
-

-
+
+

+
빠른 메뉴

- +
-
사주 분석
+
사주 분석
새 사주 보기
- -
- + +
+
-
외주 의뢰
+
외주 의뢰
프로젝트 문의
@@ -544,7 +544,7 @@ export default function MyPage() {
-
AI 스튜디오
+
AI 스튜디오
새 트랙 만들기
@@ -573,13 +573,13 @@ export default function MyPage() { const isActive = sub.status === 'active'; return ( -
+
{/* 헤더 */}
🎟
-
+
{sub.product_id}
@@ -600,7 +600,7 @@ export default function MyPage() {
만료일
-
+
{expiresDate.toLocaleDateString('ko-KR', { year: 'numeric', month: 'long', day: 'numeric' })}
@@ -616,7 +616,7 @@ export default function MyPage() { {!isExpired && (
-
자동 갱신
+
자동 갱신
{sub.auto_renew ? '만료 시 자동으로 갱신됩니다' : '만료 시 자동 갱신되지 않습니다'}
@@ -642,7 +642,7 @@ export default function MyPage() { {/* 액션 버튼 */}
+ className="flex-1 text-center py-2 text-sm font-bold text-white bg-violet-600 hover:bg-violet-700 rounded-xl transition shadow-sm"> 외주 의뢰하기 {isActive && ( @@ -682,11 +682,11 @@ export default function MyPage() { ) : (
{sajuRecords.map((rec) => ( -
+
{new Date(rec.created_at).toLocaleDateString('ko-KR')}
-
+
{rec.saju_data?.birth_year ?? '?'}년{' '} {rec.saju_data?.birth_month ?? '?'}월{' '} {rec.saju_data?.birth_day ?? '?'}일생 @@ -707,7 +707,7 @@ export default function MyPage() { )} {rec.is_paid && rec.interpretation ? 'AI 해석 다시 보기 →' : '결과 보기 →'} @@ -730,9 +730,9 @@ export default function MyPage() { linkLabel="서비스 보기" /> ) : ( -
+
- + @@ -743,8 +743,8 @@ export default function MyPage() { {payments.map((p, i) => ( - - + +
서비스 금액
{p.product_name}₩{p.amount?.toLocaleString()}{p.product_name}₩{p.amount?.toLocaleString()} {projects.length === 0 ? ( -
-
- +
+
+
-

진행 중인 프로젝트가 없습니다

+

진행 중인 프로젝트가 없습니다

외주 개발을 의뢰하시면 이곳에서 단계별 진행 현황을 실시간으로 확인할 수 있습니다.

- + 개발 의뢰하기 →
@@ -865,18 +865,18 @@ export default function MyPage() { const progressPct = totalSteps > 0 ? Math.round((completedSteps / totalSteps) * 100) : 0; return ( -
+
{/* 헤더 */} -
+

{project.title}

-

+

{project.total > 0 ? `총 ${project.total.toLocaleString()}원` : '금액 협의 중'} · {new Date(project.created_at).toLocaleDateString('ko-KR')}

@@ -893,11 +893,11 @@ export default function MyPage() {
전체 진행률 - {progressPct}% ({completedSteps}/{totalSteps}단계) + {progressPct}% ({completedSteps}/{totalSteps}단계)
@@ -906,12 +906,12 @@ export default function MyPage() { {/* 현재 진행 단계 */} {currentStep && ( -
+
- - 현재 진행 중 + + 현재 진행 중
-

{currentStep.title}

+

{currentStep.title}

{currentStep.note && (

{currentStep.note}

)} @@ -926,7 +926,7 @@ export default function MyPage() { {/* 아이콘 */}
{m.status === 'completed' ? ( @@ -946,7 +946,7 @@ export default function MyPage() {
{m.title} {m.status === 'completed' && m.completed_at && ( @@ -971,20 +971,20 @@ export default function MyPage() { )} {/* 견적서 연결 폼 */} -
-

견적서 코드로 프로젝트 연결

+
+

견적서 코드로 프로젝트 연결

견적서 링크를 받으셨나요? URL 끝의 코드를 입력하면 이 계정에서 진행 현황을 확인할 수 있습니다.

setLinkToken(e.target.value)} placeholder="예: abc123xyz" - className="flex-1 px-4 py-2 bg-white border border-[#dbe8ff] rounded-xl text-sm focus:outline-none focus:border-blue-400 min-w-0" + className="flex-1 px-4 py-2 bg-white border border-slate-200 rounded-xl text-sm focus:outline-none focus:border-violet-400 min-w-0" /> @@ -1012,12 +1012,12 @@ export default function MyPage() { ) : (
{orders.map((o) => ( -
+
-
{o.service}
+
{o.service}
{o.status === 'completed' ? '완료' : o.status === 'in_progress' ? '진행중' : '대기중'} @@ -1042,13 +1042,13 @@ function EmptyState({ icon: string; title: string; desc: string; linkHref: string; linkLabel: string; }) { return ( -
+
{icon}
-
{title}
+
{title}
{desc}
{linkLabel} →