11'use client' ;
22
33import { useState } from 'react' ;
4+ import { useRouter } from 'next/navigation' ;
45import Button from '@/shared/ui/button' ;
56import Checkbox from '@/shared/ui/checkbox' ;
67
78export default function LandingForm ( ) {
9+ const router = useRouter ( ) ;
810 const [ checked , setChecked ] = useState < string [ ] > ( [ ] ) ;
911 const [ type , setType ] = useState < string > ( 'NONE' ) ;
12+ const [ experience , setExperience ] = useState < string > ( 'NONE' ) ;
1013 const [ email , setEmail ] = useState < string > ( '' ) ;
1114 const [ consultation , setConsultation ] = useState < string > ( '' ) ;
1215 const [ isSubmitting , setIsSubmitting ] = useState < boolean > ( false ) ;
@@ -25,7 +28,13 @@ export default function LandingForm() {
2528 }
2629
2730 if ( type === 'NONE' ) {
28- alert ( '직무 유형을 선택해주세요.' ) ;
31+ alert ( '어느 분야에서 활동하고 계신가요?' ) ;
32+
33+ return ;
34+ }
35+
36+ if ( experience === 'NONE' ) {
37+ alert ( '경력이 얼마나 되시나요?' ) ;
2938
3039 return ;
3140 }
@@ -51,6 +60,7 @@ export default function LandingForm() {
5160 body : JSON . stringify ( {
5261 email : email . trim ( ) ,
5362 type,
63+ experience,
5464 features : checked . filter ( ( item ) => item !== 'AGREE_TERMS_OF_SERVICE' ) ,
5565 consultation : consultation . trim ( ) ,
5666 agreeTerms : checked . includes ( 'AGREE_TERMS_OF_SERVICE' ) ,
@@ -64,8 +74,11 @@ export default function LandingForm() {
6474 // 폼 초기화
6575 setEmail ( '' ) ;
6676 setType ( 'NONE' ) ;
77+ setExperience ( 'NONE' ) ;
6778 setChecked ( [ ] ) ;
6879 setConsultation ( '' ) ;
80+ // 로그인 페이지로 이동
81+ router . push ( '/login' ) ;
6982 } else {
7083 alert ( result . error || '오류가 발생했습니다.' ) ;
7184 }
@@ -109,109 +122,170 @@ export default function LandingForm() {
109122 < option value = "FRONTEND" > 프론트엔드 개발자</ option >
110123 < option value = "BACKEND" > 백엔드 개발자</ option >
111124 < option value = "PLANNER" > 서비스 기획자</ option >
112- < option value = "DESIGNER" > 프로덕트 디자이너</ option >
113- < option value = "UX_DESIGNER" > UX 디자이너</ option >
125+ < option value = "DESIGNER" > UI/UX 디자이너</ option >
126+ < option value = "MARKETER" > 마케터</ option >
127+ < option value = "OTHER" > 기타</ option >
128+ </ select >
129+ < div className = "font-designer-16m mt-[32px] mb-[12px] text-[#444444]" >
130+ 경력이 얼마나 되시나요?
131+ </ div >
132+ < select
133+ className = { `h-[60px] w-full appearance-none rounded-[16px] bg-[#F2F2F2] bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcgMTBMMTIgMTVMMTcgMTAiIHN0cm9rZT0iIzY2NjY2NiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+')] bg-no-repeat py-[18px] pr-[50px] pl-[24px] ${
134+ experience === 'NONE' ? 'text-[#999999]' : 'text-[#111111]'
135+ } `}
136+ style = { { backgroundPosition : 'calc(100% - 12px) center' } }
137+ value = { experience }
138+ onChange = { ( e ) => setExperience ( e . target . value ) }
139+ >
140+ < option value = "NONE" hidden >
141+ 경력을 선택해주세요.
142+ </ option >
143+ < option value = "NEWBIE" > 뉴비</ option >
144+ < option value = "JOBSEEKER" > 취업준비중(0년차)</ option >
145+ < option value = "JUNIOR" > 주니어(1-3년차)</ option >
146+ < option value = "MIDDLE" > 미들(4-6년차)</ option >
147+ < option value = "SENIOR" > 시니어(7년차 이상)</ option >
114148 </ select >
115149 < div className = "font-designer-16m mt-[32px] mb-[12px] text-[#444444]" >
116- 제로원에서 사용해보고 싶은 기능은 무엇인가요?
150+ 제로원에서 가장 먼저 선보였으면 하는 기능은 무엇인가요?
117151 < span className = "font-designer-14m text-[#FF4C4F]" >
118152 *복수선택가능
119153 </ span >
120154 </ div >
121155
122- < div className = "flex flex-row gap-[16px]" >
156+ < div className = "grid grid-cols-2 gap-[16px]" >
123157 < div className = "flex flex-row gap-[11px]" >
124158 < Checkbox
125- id = "STUDY "
126- checked = { checked . includes ( 'STUDY ' ) }
159+ id = "TECH_INTERVIEW "
160+ checked = { checked . includes ( 'TECH_INTERVIEW ' ) }
127161 onToggle = { ( ) => {
128162 setChecked (
129- checked . includes ( 'STUDY ' )
130- ? checked . filter ( ( item ) => item !== 'STUDY ' )
131- : [ ...checked , 'STUDY ' ] ,
163+ checked . includes ( 'TECH_INTERVIEW ' )
164+ ? checked . filter ( ( item ) => item !== 'TECH_INTERVIEW ' )
165+ : [ ...checked , 'TECH_INTERVIEW ' ] ,
132166 ) ;
133167 } }
134168 themeColor = "#F63D68"
135169 />
136170 < label
137- htmlFor = "STUDY "
171+ htmlFor = "TECH_INTERVIEW "
138172 className = "font-designer-16m text-[#767676]"
139173 >
140- 1:1 개인 스터디
174+ 1:1 파트너 면접 스터디
141175 </ label >
142176 </ div >
143177 < div className = "flex flex-row gap-[11px]" >
144178 < Checkbox
145- id = "GROUP_STUDY "
146- checked = { checked . includes ( 'GROUP_STUDY ' ) }
179+ id = "BOOK_STUDY "
180+ checked = { checked . includes ( 'BOOK_STUDY ' ) }
147181 onToggle = { ( ) => {
148182 setChecked (
149- checked . includes ( 'GROUP_STUDY ' )
150- ? checked . filter ( ( item ) => item !== 'GROUP_STUDY ' )
151- : [ ...checked , 'GROUP_STUDY ' ] ,
183+ checked . includes ( 'BOOK_STUDY ' )
184+ ? checked . filter ( ( item ) => item !== 'BOOK_STUDY ' )
185+ : [ ...checked , 'BOOK_STUDY ' ] ,
152186 ) ;
153187 } }
154188 themeColor = "#F63D68"
155189 />
156190 < label
157- htmlFor = "GROUP_STUDY "
191+ htmlFor = "BOOK_STUDY "
158192 className = "font-designer-16m text-[#767676]"
159193 >
160- 단체 스터디 그룹
194+ 책/인강 스터디
161195 </ label >
162196 </ div >
163197 < div className = "flex flex-row gap-[11px]" >
164198 < Checkbox
165- id = "OUTSOURCING "
166- checked = { checked . includes ( 'OUTSOURCING ' ) }
199+ id = "MENTOR_TUTORING "
200+ checked = { checked . includes ( 'MENTOR_TUTORING ' ) }
167201 onToggle = { ( ) => {
168202 setChecked (
169- checked . includes ( 'OUTSOURCING ' )
170- ? checked . filter ( ( item ) => item !== 'OUTSOURCING ' )
171- : [ ...checked , 'OUTSOURCING ' ] ,
203+ checked . includes ( 'MENTOR_TUTORING ' )
204+ ? checked . filter ( ( item ) => item !== 'MENTOR_TUTORING ' )
205+ : [ ...checked , 'MENTOR_TUTORING ' ] ,
172206 ) ;
173207 } }
174208 themeColor = "#F63D68"
175209 />
176210 < label
177- htmlFor = "OUTSOURCING "
211+ htmlFor = "MENTOR_TUTORING "
178212 className = "font-designer-16m text-[#767676]"
179213 >
180- 외주 프로젝트
214+ 멘토 주도 1:1/그룹 과외형 스터디
181215 </ label >
182216 </ div >
183217 < div className = "flex flex-row gap-[11px]" >
184218 < Checkbox
185- id = "EXPERT_ANSWER "
186- checked = { checked . includes ( 'EXPERT_ANSWER ' ) }
219+ id = "MISSION_CHALLENGE "
220+ checked = { checked . includes ( 'MISSION_CHALLENGE ' ) }
187221 onToggle = { ( ) => {
188222 setChecked (
189- checked . includes ( 'EXPERT_ANSWER ' )
190- ? checked . filter ( ( item ) => item !== 'EXPERT_ANSWER ' )
191- : [ ...checked , 'EXPERT_ANSWER ' ] ,
223+ checked . includes ( 'MISSION_CHALLENGE ' )
224+ ? checked . filter ( ( item ) => item !== 'MISSION_CHALLENGE ' )
225+ : [ ...checked , 'MISSION_CHALLENGE ' ] ,
192226 ) ;
193227 } }
194228 themeColor = "#F63D68"
195229 />
196230 < label
197- htmlFor = "EXPERT_ANSWER "
231+ htmlFor = "MISSION_CHALLENGE "
198232 className = "font-designer-16m text-[#767676]"
199233 >
200- 전문가 답변 서비스
234+ 미션인증 챌린지 스터디
235+ </ label >
236+ </ div >
237+ < div className = "flex flex-row gap-[11px]" >
238+ < Checkbox
239+ id = "FUNDED_PROJECT"
240+ checked = { checked . includes ( 'FUNDED_PROJECT' ) }
241+ onToggle = { ( ) => {
242+ setChecked (
243+ checked . includes ( 'FUNDED_PROJECT' )
244+ ? checked . filter ( ( item ) => item !== 'FUNDED_PROJECT' )
245+ : [ ...checked , 'FUNDED_PROJECT' ] ,
246+ ) ;
247+ } }
248+ themeColor = "#F63D68"
249+ />
250+ < label
251+ htmlFor = "FUNDED_PROJECT"
252+ className = "font-designer-16m text-[#767676]"
253+ >
254+ 펀딩받는 실전프로젝트 스터디
255+ </ label >
256+ </ div >
257+ < div className = "flex flex-row gap-[11px]" >
258+ < Checkbox
259+ id = "OUTSOURCING"
260+ checked = { checked . includes ( 'OUTSOURCING' ) }
261+ onToggle = { ( ) => {
262+ setChecked (
263+ checked . includes ( 'OUTSOURCING' )
264+ ? checked . filter ( ( item ) => item !== 'OUTSOURCING' )
265+ : [ ...checked , 'OUTSOURCING' ] ,
266+ ) ;
267+ } }
268+ themeColor = "#F63D68"
269+ />
270+ < label
271+ htmlFor = "OUTSOURCING"
272+ className = "font-designer-16m text-[#767676]"
273+ >
274+ SI 외주 프로젝트
201275 </ label >
202276 </ div >
203277 </ div >
204278
205279 < div className = "font-designer-16m mt-[32px] mb-[12px] text-[#444444]" >
206- 전문가에게 상담받고 싶은 고민거리가 있으시다면 자유롭게 적어주세요.
280+ 요즘 계속 생각나는 고민(질문)이 있으시다면 자유롭게 적어주세요. 진심을 다해 돕겠습니다 .
207281 </ div >
208282 < textarea
209- placeholder = "Ex) 외주 프로젝트에 참여하고 싶은데 제로 베이스라 어디서부터 시작해야할지 잘 모르겠어요."
283+ placeholder = "Ex) 3년차 프론트엔드 개발자고 외주를 하고 싶은데 어디서부터 시작해야할지 잘 모르겠어요. 그럴 실력이 되는지도 모르겠고... 팀을 찾고 같이 하면 좋을 것 같아요 "
210284 value = { consultation }
211285 onChange = { ( e ) => setConsultation ( e . target . value ) }
212286 className = "placeholder:font-designer-16m h-[120px] w-full resize-none rounded-[16px] bg-[#F2F2F2] px-[24px] py-[18px] placeholder:text-[#999999]"
213287 />
214- < div className = "mt-[24px] flex flex-row gap-[11px]" >
288+ < div className = "mt-[24px] flex flex-row items-center gap-[11px]" >
215289 < Checkbox
216290 id = "AGREE_TERMS_OF_SERVICE"
217291 checked = { checked . includes ( 'AGREE_TERMS_OF_SERVICE' ) }
@@ -233,6 +307,14 @@ export default function LandingForm() {
233307 >
234308 개인정보 보호정책에 동의합니다.
235309 </ label >
310+
311+ < button
312+ type = "button"
313+ onClick = { ( ) => window . open ( 'https://www.notion.so/gaan/13efbb391d7980cea50fc6864d60f4f7?p=29bfbb391d7980fba669f8d4de741021&pm=s' , '_blank' ) }
314+ className = "font-designer-14m text-[#F63D68] underline hover:text-[#E5353A]"
315+ >
316+ 보기
317+ </ button >
236318 </ div >
237319
238320 < Button
@@ -241,7 +323,7 @@ export default function LandingForm() {
241323 className = "text-font-designer-18m mt-[60px] h-[60px] w-full rounded-[16px] py-[16px]"
242324 disabled = { isSubmitting }
243325 >
244- 오픈 알림 신청하기
326+ 내 관심분야 스터디 오픈 알림 신청하기
245327 </ Button >
246328 </ div >
247329 </ form >
0 commit comments