diff --git a/src/app/login/onboarding-info/page.tsx b/src/app/login/onboarding-info/page.tsx index ab9fcc8b..a3d368d0 100644 --- a/src/app/login/onboarding-info/page.tsx +++ b/src/app/login/onboarding-info/page.tsx @@ -1,5 +1,19 @@ import OnBoardingInfo from '@/features/onBoarding/components/OnBoardingInfo' +import OnBoaridngHeader from '@/features/onBoarding/components/OnBoaridngHeader' export default function OnBoardingInfoPage() { - return + return ( +
+ + {/* progress */} +
+
+
+
+ +
+ +
+
+ ) } diff --git a/src/app/onBoarding/page.tsx b/src/app/onBoarding/page.tsx deleted file mode 100644 index ecf87aeb..00000000 --- a/src/app/onBoarding/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import OnBoardingPrivateInfo from '@/components/OnBoarding/OnBoardingPrivateInfo' - -export default function onBoardingPrivateInfoPage() { - return ( -
- -
- ) -} diff --git a/src/features/onBoarding/components/OnBoardingInfo.tsx b/src/features/onBoarding/components/OnBoardingInfo.tsx index ccdda38b..b8054e4d 100644 --- a/src/features/onBoarding/components/OnBoardingInfo.tsx +++ b/src/features/onBoarding/components/OnBoardingInfo.tsx @@ -1,3 +1,85 @@ +'use client' +import { useState, useEffect } from 'react' +import { useSearchParams } from 'next/navigation' +import Input from '@/shared/ui/Input/Input' +import { Button } from '@/shared/ui/Button/Button' + export default function OnBoardingInfo() { - return
+ const [name, setName] = useState('') // 이름 상태 관리 + const [phoneNumber, setPhoneNumber] = useState('') // 연락처 상태 관리 + const [email, setEmail] = useState('') // 이메일 상태 관리 + const searchParams = useSearchParams() + + useEffect(() => { + // URL에서 email 쿼리 파라미터 가져오기 + const emailParam = searchParams.get('email') + if (emailParam) { + setEmail(emailParam) // 이메일 상태 업데이트 + } + }, [searchParams]) + + const handleNameChange = (event: React.ChangeEvent) => { + setName(event.target.value) + } + + const handlePhoneNumberChange = (event: React.ChangeEvent) => { + const input = event.target.value.replace(/\D/g, '') + if (input.length > 11) return + + const formattedNumber = input.replace( + /(\d{3})(\d{0,4})(\d{0,4})/, + (match, p1, p2, p3) => `${p1}${p2 ? `-${p2}` : ''}${p3 ? `-${p3}` : ''}`, + ) + setPhoneNumber(formattedNumber) + } + + // 이름이 입력되고, 전화번호가 최소 10자리 이상일 때 버튼을 활성화 + const isButtonEnabled = name.trim() !== '' && phoneNumber.replace(/\D/g, '').length >= 10 + + return ( +
+
+

기본 정보를 입력해주세요.

+

입력한 정보는 마이페이지에서 확인하고 수정할 수 있어요

+ +
+

이름

+ +
+ +
+

연락처

+ +
+ +
+

이메일

+
{email}
+
+ +

+ *매칭 성사 시 해당 이메일 주소를 상대방이 볼 수 있어요 +
+ 이메일은 마이페이지 - 계정 설정에서 변경할 수 있어요 +

+
+ +
+
+
+ ) } diff --git a/src/features/onBoarding/components/OnBoaridngHeader.tsx b/src/features/onBoarding/components/OnBoaridngHeader.tsx new file mode 100644 index 00000000..07dbf245 --- /dev/null +++ b/src/features/onBoarding/components/OnBoaridngHeader.tsx @@ -0,0 +1,11 @@ +import Image from 'next/image' + +export default function OnBoaridngHeader() { + return ( + <> + + + ) +}