From cd1f67d0760a23ac9944714c55f6e989703d2c86 Mon Sep 17 00:00:00 2001 From: gahusb Date: Thu, 11 Jun 2026 02:14:43 +0900 Subject: [PATCH] =?UTF-8?q?feat(login):=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=84=EB=AC=B8=20=ED=86=A4=20?= =?UTF-8?q?=EB=A6=AC=EB=94=94=EC=9E=90=EC=9D=B8=20(=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=AC=B4=EC=88=98=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- app/login/page.tsx | 332 +++++++++++++++++++++++++++++++-------------- 1 file changed, 227 insertions(+), 105 deletions(-) diff --git a/app/login/page.tsx b/app/login/page.tsx index c13f83c..fe18dfa 100644 --- a/app/login/page.tsx +++ b/app/login/page.tsx @@ -73,117 +73,76 @@ function LoginForm() { if (error) setMessage('Google 로그인 오류: ' + error.message); }; - return ( -
- {/* 배경 장식 */} -
+ const isSuccess = + message.includes('완료') || message.includes('확인해주세요'); -
- {/* 로고 */} + return ( +
+
+ {/* 워드마크 */}
- -
- 쟁 -
-
-
쟁승메이드
-
박재오의 개발 공방
-
+ + 쟁승메이드 +

+ {isSignUp + ? '가입 후 의뢰 현황과 구매 내역을 관리하세요' + : '로그인하고 의뢰 현황과 구매 내역을 확인하세요'} +

{/* 카드 */} -
-
-

- {isSignUp ? '회원가입' : '로그인'} -

-

- {isSignUp - ? '가입 후 사주 기록, 결제 내역을 관리하세요' - : '사주 기록·결제·의뢰 내역을 확인하세요'} -

-
+
+ {/* 카드 헤더 */} +

+ {isSignUp ? '회원가입' : '로그인'} +

- {/* 오류/성공 메시지 */} - {message && ( -
- {message} -
- )} - - {/* 이메일/비밀번호 폼 */} -
-
- - setEmail(e.target.value)} - required - className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-xl text-white placeholder-slate-500 focus:outline-none focus:border-blue-500 focus:bg-white/8 transition text-sm" - /> -
-
- - setPassword(e.target.value)} - required - minLength={6} - className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-xl text-white placeholder-slate-500 focus:outline-none focus:border-blue-500 focus:bg-white/8 transition text-sm" - /> -
- -
- - {/* 전환 링크 */} -
- -
- - {/* 구분선 */} -
-
-
-
-
- 또는 소셜 로그인 -
-
- - {/* 구글 로그인 */} + {/* Google 로그인 */} + + {/* 구분선 */} +
+
+
+
+
+ + 또는 + +
+
+ + {/* 오류/성공 메시지 */} + {message && ( +
+ {message} +
+ )} + + {/* 이메일/비밀번호 폼 */} +
+
+ + setEmail(e.target.value)} + required + className="w-full px-3.5 py-2.5 rounded-lg text-sm outline-none" + style={{ + background: 'var(--jsm-surface)', + border: '1px solid var(--jsm-line)', + color: 'var(--jsm-ink)', + transition: 'border-color 0.15s', + }} + onFocus={(e) => { + e.currentTarget.style.borderColor = 'var(--jsm-accent)'; + }} + onBlur={(e) => { + e.currentTarget.style.borderColor = 'var(--jsm-line)'; + }} + /> +
+ +
+ + setPassword(e.target.value)} + required + minLength={6} + className="w-full px-3.5 py-2.5 rounded-lg text-sm outline-none" + style={{ + background: 'var(--jsm-surface)', + border: '1px solid var(--jsm-line)', + color: 'var(--jsm-ink)', + transition: 'border-color 0.15s', + }} + onFocus={(e) => { + e.currentTarget.style.borderColor = 'var(--jsm-accent)'; + }} + onBlur={(e) => { + e.currentTarget.style.borderColor = 'var(--jsm-line)'; + }} + /> +
+ + +
+ + {/* 가입/로그인 전환 */} +
+ +
{/* 홈으로 */}
- - ← 홈으로 돌아가기 + { + (e.currentTarget as HTMLAnchorElement).style.color = 'var(--jsm-ink-soft)'; + }} + onMouseLeave={(e) => { + (e.currentTarget as HTMLAnchorElement).style.color = 'var(--jsm-ink-faint)'; + }} + > + 홈으로 돌아가기
@@ -207,8 +323,14 @@ function LoginForm() { export default function LoginPage() { return ( -
+
+
}>