From ccfda47b96aaf3dbdf7491d22c130c02183d2fe3 Mon Sep 17 00:00:00 2001 From: SEAN Date: Thu, 26 Feb 2026 14:37:42 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9D=B8=EC=A6=9D=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EA=B5=AC=ED=98=84=20(=EB=A1=9C=EA=B7=B8=EC=9D=B8/?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85/=EC=9D=B4=EB=A9=94?= =?UTF-8?q?=EC=9D=BC=20=EC=9D=B8=EC=A6=9D)=20(#4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LoginPage: react-hook-form + zod 유효성검사, 비밀번호 토글, shake 애니메이션, 로그인 성공/실패 처리, 성공 오버레이 - SignupPage: 이메일/비밀번호/이름/전화번호 실시간 검증, 전화번호 자동 하이픈, 약관 동의 체크박스, 인증 메일 전송 모달, 이용약관/개인정보 모달 - VerifyEmailPage: 6자리 코드 입력(자동 포커스/붙여넣기), 인증 성공/실패, 재전송 60초 쿨다운, 인증 완료 모달 + 홈 이동 오버레이 - ResetPasswordModal: 비밀번호 재설정 이메일 발송, sonner 토스트 - AuthLayout: flex 기반 풋터 위치 수정 (콘텐츠 중앙 + 풋터 하단) - 라우터: verify-email 가드 추가 (인증 완료 시 홈 리다이렉트) Co-Authored-By: Claude Opus 4.6 --- react/src/components/layout/AuthLayout.tsx | 9 +- .../auth/components/ResetPasswordModal.tsx | 141 ++++++ react/src/features/auth/pages/LoginPage.tsx | 300 ++++++++++- react/src/features/auth/pages/SignupPage.tsx | 467 +++++++++++++++++- .../features/auth/pages/VerifyEmailPage.tsx | 374 +++++++++++++- react/src/features/auth/types.ts | 1 + react/src/index.css | 10 + react/src/routes/index.tsx | 19 +- 8 files changed, 1308 insertions(+), 13 deletions(-) create mode 100644 react/src/features/auth/components/ResetPasswordModal.tsx diff --git a/react/src/components/layout/AuthLayout.tsx b/react/src/components/layout/AuthLayout.tsx index c43328f..2fa0170 100644 --- a/react/src/components/layout/AuthLayout.tsx +++ b/react/src/components/layout/AuthLayout.tsx @@ -2,11 +2,14 @@ import { Outlet } from "react-router-dom"; export default function AuthLayout() { return ( -
- +
+ {/* 콘텐츠 중앙 정렬 */} +
+ +
{/* 풋터 */} -