Skip to content

[WRFE-11](feat): 검색 및 결과 페이지 퍼블리싱 #60

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 72 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
d3ebcd3
[WRFE-11](fix): conflict 해결
Joy0w0 Nov 13, 2024
b3adb2d
[WRDE-11](feat): 검색 및 결과 페이지 퍼블리싱
Joy0w0 Nov 13, 2024
2f40b41
[WRDS-45](feat): Typo 스토리북 변경사항 맞춰 수정
Joy0w0 Oct 30, 2024
a763b90
[WRDS-45](feat): 다른 컴포넌트 및 페이지 Typo 수정
Joy0w0 Oct 30, 2024
5a95967
[WRDS-45](docs): mdx docs 수정
Joy0w0 Nov 6, 2024
8a6aae1
[WRDS-45](feat): 다른 페이지 typo 추가 수정
Joy0w0 Nov 6, 2024
55f11d6
[WRDS-45](feat): Typography as 태그 default 값을 p 태그로 설정
Joy0w0 Nov 6, 2024
d4857b6
[WRFE-18](feat): 회원가입 Funnel 세팅, GenericForm 컴포넌트 생성
sangminlee98 Oct 15, 2024
43ff6b4
[WRFE-18](fix): 로그인 페이지 Typography 수정
sangminlee98 Oct 30, 2024
d6ed646
[WRDS-45](fix): pnpm-lock 파일 충돌로 인해 pnpm 재설치
Joy0w0 Nov 13, 2024
8df8b3d
[WRFE-55](fix): RaffleCard Price 타입 수정
sangminlee98 Nov 6, 2024
a4c311a
[WRFE-55](rename): features 폴더 경로 변경
sangminlee98 Nov 6, 2024
a1df873
[WRFE-55](feat): 최신 래플 Banner 구현
sangminlee98 Nov 6, 2024
8f2d4e4
[WRFE-55](feat): 카테고리 목록 버튼 UI 구현
sangminlee98 Nov 6, 2024
5ee9636
[WRFE-55](feat): 최신 래플 목록 UI 구현
sangminlee98 Nov 6, 2024
a06da0a
[WRFE-55](feat): 홈 UI 구현
sangminlee98 Nov 6, 2024
fd10e24
[WRFE-55](chore): pnpm-lock file 업데이트
sangminlee98 Nov 6, 2024
63afd8b
[WRFE-55](refactor): 홈 폴더구조 리팩토링
sangminlee98 Nov 10, 2024
dd37587
[WRFE-55](refactor): 로그인/회원가입 폴더구조 리팩토링
sangminlee98 Nov 10, 2024
4c59361
[WRFE-55](refactor): 변경된 폴더구조로 Import 경로 수정
sangminlee98 Nov 10, 2024
3533bb0
[WRFE-55](fix): 오탈자 수정
sangminlee98 Nov 11, 2024
ed0dee5
[WRFE-10](feat): products 페이지 생성
Ajeong-Im Aug 28, 2024
ce94352
[WRFE-10](feat): 래플 상세 페이지 레이아웃 생성
Ajeong-Im Aug 30, 2024
a46083c
[WRFE-10](feat): products 페이지 생성
Ajeong-Im Aug 28, 2024
90ccb20
[WRFE-10](feat): 래플 상세 페이지 레이아웃 생성
Ajeong-Im Aug 30, 2024
8c514be
[WRFE-10](feat): ProductInfoMenu 컴포넌트 추가
Ajeong-Im Aug 30, 2024
55b9c77
[WRFE-10](refactor): 폴더 구조 변경(page 폴더 제거)
Ajeong-Im Sep 10, 2024
4c0623a
[WRFE-10](feat): 메뉴바에서 선택된 내용으로 스크롤 기능 추가
Ajeong-Im Sep 10, 2024
c38d640
[WRFE-10](feat): 이미지 슬라이더 구현
Ajeong-Im Sep 10, 2024
b0db478
[WRFE-10](refactor): 이미지 스와이프 라이브러리 변경 (react-slick -> swiper.js)
Ajeong-Im Sep 13, 2024
cba917c
[WRFE-10](feat): 래플 상세 페이지 레이아웃 생성
Ajeong-Im Aug 30, 2024
f172beb
[WRFE-10](feat): ProductInfoMenu 컴포넌트 추가
Ajeong-Im Aug 30, 2024
7c97a3b
[WRFE-10](refactor): 폴더 구조 변경(page 폴더 제거)
Ajeong-Im Sep 10, 2024
44ba410
[WRFE-10](feat): 이미지 슬라이더 구현
Ajeong-Im Sep 10, 2024
42b1fd3
[WRFE-10](refactor): 이미지 스와이프 라이브러리 변경 (react-slick -> swiper.js)
Ajeong-Im Sep 13, 2024
d4047dc
[WRFE-10](feat): Header 컴포넌트 추가
Ajeong-Im Sep 20, 2024
2f5fd02
[WRFE-10](design): gray button cursor-not-allowed 설정 추가
Ajeong-Im Sep 20, 2024
79b8434
[WRFE-10](feat): bottom 응모 버튼 생성
Ajeong-Im Sep 20, 2024
52469a9
[WRFE-10](feat): 공유하기 모달 추가
Ajeong-Im Oct 1, 2024
d230329
[WRFE-10](feat): applyStatus 추가에 대한 버튼 상태 변경
Ajeong-Im Oct 1, 2024
e3026c0
[WRFE-10](feat): 응모 완료 모달 추가
Ajeong-Im Oct 1, 2024
b125c9e
[WRFE-10](refactor): 메인 컨텐츠 ui 분리
Ajeong-Im Oct 3, 2024
d3e96fe
[WRFE-10](feat): 쿼리스트링 값에 따라 raffle/event 페이지 생성
Ajeong-Im Oct 9, 2024
68d5920
[WRFE-10](feat): RaffleCard 가격, 스크랩 선택적으로 보이도록 수정
Ajeong-Im Oct 14, 2024
d4ea7cf
[WRFE-10](feat): RaffleCard 태그 선택적으로 보여지게 수정, shared/ui에 Divider 추가
Ajeong-Im Oct 16, 2024
40965fc
[WRFE-10](refactor): 메뉴 리스트 상수화, response body applyStatus -> isAppli…
Ajeong-Im Oct 28, 2024
b7c79ba
[WRFE-10](refactor): 불필요한 layout 삭제, 분리한 useMenu 훅 다시 통합
Ajeong-Im Oct 28, 2024
bf4995f
[WRFE-](refactor): React.FC 제거, use-dialog 커스텀 훅 export문 추가
Ajeong-Im Nov 4, 2024
27e16d9
[WRFE-10](style): divider, product-info export 수정
Ajeong-Im Nov 5, 2024
4bf7885
[WRFE-10](refactor): 메뉴 클릭 시 페이지 이동 함수 분리, 헤더 오프셋 값 상수화
Ajeong-Im Nov 5, 2024
4a5e25a
[WRFE-10](chore): 커스텀 스크롤바 스타일링을 위한 tailwind-scrollbar-hide 플러그인 추가
Ajeong-Im Nov 5, 2024
9262d00
[WRFE-10](refactor): dayjs를 사용하여 formatDate 함수 확장성 있게 리팩토링
Ajeong-Im Nov 5, 2024
3f4ffe1
[WRFE-10](refactor): DialogTrigger 사용하도록 변경, hydration 관련 코드 수정
Ajeong-Im Nov 11, 2024
bf2ae04
[WRFE-10](refactor): ProductInfo 컴포넌트 리팩토링
Ajeong-Im Nov 18, 2024
bea4c05
[WRFE-10](refactor): ShareDialog useEffect 삭제, Raffle interface 중복 선언…
Ajeong-Im Nov 27, 2024
4efe0e4
[WRFE-11](fix): conflict 해결
Joy0w0 Nov 13, 2024
7c3baa7
[WRDE-11](feat): 검색 및 결과 페이지 퍼블리싱
Joy0w0 Nov 13, 2024
1c12333
[WRFE-11](fix): conflict 해결
Joy0w0 Dec 4, 2024
26271af
[WRFE-61](feat): next-auth를 통한 토큰 관리 기능 구현
sangminlee98 Nov 30, 2024
83f6a46
[WRFE-61](feat): fetch instance 구현
sangminlee98 Nov 30, 2024
d7cc279
[WRFE-61](feat): middleware를 사용하여 Private Route 처리
sangminlee98 Nov 30, 2024
8c7ca39
[WRFE-61](fix): middleware matcher에서 정적 파일 및 API 요청 제외
sangminlee98 Nov 30, 2024
74ce422
[WRFE-61](remove): 불필요한 파일 삭제
sangminlee98 Nov 30, 2024
6cde784
[WRFE-61](fix): 로그인 API 요청 시 fetch instance에서 withAuth 옵션 삭제
sangminlee98 Nov 30, 2024
0908e51
[WRFE-61](fix): 토큰 재발급 API에서 body에 refreshToken 추가 및 로그아웃 처리
sangminlee98 Dec 2, 2024
cbb3e2f
[WRFE-61](fix): middleware matcher 수정, Header 수정
sangminlee98 Dec 2, 2024
d6160d3
[WRFE-61](feat): 로그인 토스트 추가 및 코드리뷰 반영
sangminlee98 Dec 10, 2024
aa10b22
[WRFE-61](refactor): 토큰 재발급 로직 에러 처리 리팩토링
sangminlee98 Dec 10, 2024
cdf89bb
[WRFE-11](fix): conflict 해결
Joy0w0 Nov 13, 2024
4283365
[WRDE-11](feat): 검색 및 결과 페이지 퍼블리싱
Joy0w0 Nov 13, 2024
f8c4c85
[WRFE-11](fix): conflict 해결
Joy0w0 Nov 13, 2024
3c4d1d1
[WRFE-11](fix): 리베이스 충돌 해결
Joy0w0 Dec 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import {handlers} from '@/shared/util/auth';

export const {GET, POST} = handlers;
11 changes: 5 additions & 6 deletions apps/front/wraffle-webview/app/join/page.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
'use client';

import type {z} from 'zod';
import {joinDefaultValues, joinSchema} from '@/entities/auth/join/schema';
import type {JoinStep} from '@/entities/auth/join/type';
import {Header, ProgressBar} from '@/shared/ui';
import GenericForm from '@/shared/ui/form/GenericForm';
import {Info, Name, Extra, PhoneFunnel} from '@/widgets/join';
import {Header, ProgressBar, GenericForm} from '@/shared/ui';
import type {JoinStep} from '@/widgets/join/config';
import {joinDefaultValues, joinSchema} from '@/widgets/join/config';
import {Info, Name, Extra, PhoneFunnel} from '@/widgets/join/ui';
import {zodResolver} from '@hookform/resolvers/zod';
import {useFunnel} from '@use-funnel/browser';

Expand All @@ -28,7 +27,7 @@ const Join = () => {
return (
<div>
<section className='py-5'>
<Header withBackButton>
<Header>
<Header.Left>
<Header.BackButton onClick={() => funnel.history.back()} />
</Header.Left>
Expand Down
2 changes: 2 additions & 0 deletions apps/front/wraffle-webview/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import './globals.css';
import type {Metadata} from 'next';
import {ReactQueryProviders} from '@/app/providers';
import {pretendard} from '@/shared/util/font';
import {Toaster} from '@wraffle/ui';
import IconLoader from '@wraffle/ui/src/ui/icon/IconLoader';

export const metadata: Metadata = {
Expand All @@ -19,6 +20,7 @@ export default function RootLayout({
<body className={`${pretendard.variable} font-pretendard`}>
<div className='container h-screen min-h-screen'>
<ReactQueryProviders>
<Toaster />
{IconLoader}
{children}
</ReactQueryProviders>
Expand Down
28 changes: 17 additions & 11 deletions apps/front/wraffle-webview/app/login/email/page.tsx
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
'use client';

import useLoginToast from './useLoginToast';
import type {z} from 'zod';
import {signIn} from 'next-auth/react';
import Image from 'next/image';
import Link from 'next/link';
import {useRouter} from 'next/navigation';
import {loginDefaultValues, loginSchema} from '@/entities/auth';
import {Header} from '@/shared/ui';
import GenericForm from '@/shared/ui/form/GenericForm';
import {EmailForm} from '@/widgets/login/EmailForm';
import {useSearchParams} from 'next/navigation';
import {GenericForm, Header} from '@/shared/ui';
import {loginDefaultValues, loginSchema} from '@/widgets/login/config';
import {EmailForm} from '@/widgets/login/ui';
import {zodResolver} from '@hookform/resolvers/zod';
import {Typography} from '@wraffle/ui';

const EmailLogin = () => {
const router = useRouter();

const params = useSearchParams();
const onSubmit = (data: z.infer<typeof loginSchema>) => {
//!TODO: 로그인 로직 구현
console.log(data.email, data.password);
signIn('credentials', {
email: data.email,
password: data.password,
redirectTo: '/',
});
};
useLoginToast({code: params.get('code')});

return (
<div>
<Header>
<Header.BackButton onClick={router.back} />
<Header.Left>
<Header.BackButton />
</Header.Left>
</Header>
<div className='flex h-full flex-col items-center px-5'>
<Image src='/logo.png' alt='logo' width={136} height={75} priority />
Expand All @@ -40,7 +46,7 @@ const EmailLogin = () => {
</section>
<section className='mt-5 flex gap-[14px]'>
<Link className='flex items-center' href={'/'}>
<Typography className='text-[13px] text-zinc-500'>
<Typography size='p4' color='zinc500'>
비밀번호 찾기
</Typography>
</Link>
Expand Down
46 changes: 46 additions & 0 deletions apps/front/wraffle-webview/app/login/email/useLoginToast.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import {useEffect} from 'react';
import {ERROR_STATUS} from '@/shared/util';
import {useToast} from '@wraffle/ui';

interface Props {
code: string | null;
}

const useLoginToast = ({code}: Props) => {
const {toast} = useToast();

if (!code) return;

useEffect(() => {
switch (code) {
case ERROR_STATUS.NON_EXISTENT_ACCOUNT.code: {
toast({
title: ERROR_STATUS.NON_EXISTENT_ACCOUNT.message,
duration: 2000,
variant: 'warning',
icon: 'close',
});
break;
}
case ERROR_STATUS.MISMATCHED_PASSWORD.code: {
toast({
title: ERROR_STATUS.MISMATCHED_PASSWORD.message,
duration: 2000,
variant: 'warning',
icon: 'close',
});
break;
}
default: {
toast({
title: '로그인에 실패했습니다.',
duration: 2000,
variant: 'warning',
icon: 'close',
});
}
}
}, []);
};

export default useLoginToast;
6 changes: 4 additions & 2 deletions apps/front/wraffle-webview/app/login/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ const Login = () => {
priority
/>
<div className='mt-auto flex w-full flex-col items-center gap-5'>
<Button className='animate-fade-in-down font-semibold opacity-0 delay-200 duration-700 fill-mode-forwards'>
시작하기
<Button className='animate-fade-in-down opacity-0 delay-200 duration-700 fill-mode-forwards'>
<Typography size='h6' color='white'>
시작하기
</Typography>
</Button>
<span className='flex animate-fade-in-down gap-1 opacity-0 delay-500 duration-700 fill-mode-forwards'>
<Typography size='p4'>이미 계정이 있으신가요?</Typography>
Expand Down
134 changes: 27 additions & 107 deletions apps/front/wraffle-webview/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,113 +1,33 @@
import Image from 'next/image';
import {categories} from '@/entities/category';
import {RecentRaffles} from '@/features/manage-raffle/config';
import {Banner} from '@/features/manage-raffle/ui';
import {Header} from '@/shared/ui';
import {CategoryButtons} from '@/widgets/category-list/ui';
import {recommendItems} from '@/widgets/recommend-list/config';
import {RecommendList} from '@/widgets/recommend-list/ui';
import {BottomNavigation, Icon} from '@wraffle/ui';

export default function Home() {
return (
<main className='flex min-h-screen flex-col items-center justify-between p-24'>
<div className='z-10 w-full max-w-5xl items-center justify-between font-mono text-sm lg:flex'>
<p className='fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:dark:bg-zinc-800/30'>
Get started by editing&nbsp;
<code className='font-mono font-bold'>src/app/page.tsx</code>
</p>
<div className='fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white lg:static lg:size-auto lg:bg-none dark:from-black dark:via-black'>
<a
className='pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0'
href='https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app'
target='_blank'
rel='noopener noreferrer'
>
By{' '}
<Image
src='/vercel.svg'
alt='Vercel Logo'
className='dark:invert'
width={100}
height={24}
priority
/>
</a>
</div>
</div>

<div className="before:bg-gradient-radial after:bg-gradient-conic relative z-[-1] flex place-items-center before:absolute before:h-[300px] before:w-full before:-translate-x-1/2 before:rounded-full before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-full after:translate-x-1/3 after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] sm:before:w-[480px] sm:after:w-[240px] before:lg:h-[360px] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40">
<Image
className='relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert'
src='/next.svg'
alt='Next.js Logo'
width={180}
height={37}
priority
/>
</div>

<div className='mb-32 grid text-center lg:mb-0 lg:w-full lg:max-w-5xl lg:grid-cols-4 lg:text-left'>
<a
href='https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app'
className='group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30'
target='_blank'
rel='noopener noreferrer'
>
<h2 className='mb-3 text-2xl font-semibold'>
Docs{' '}
<span className='inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none'>
-&gt;
</span>
</h2>
<p className='m-0 max-w-[30ch] text-sm opacity-50'>
Find in-depth information about Next.js features and API.
</p>
</a>

<a
href='https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app'
className='group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30'
target='_blank'
rel='noopener noreferrer'
>
<h2 className='mb-3 text-2xl font-semibold'>
Learn{' '}
<span className='inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none'>
-&gt;
</span>
</h2>
<p className='m-0 max-w-[30ch] text-sm opacity-50'>
Learn about Next.js in an interactive course with&nbsp;quizzes!
</p>
</a>

<a
href='https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app'
className='group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30'
target='_blank'
rel='noopener noreferrer'
>
<h2 className='mb-3 text-2xl font-semibold'>
Templates{' '}
<span className='inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none'>
-&gt;
</span>
</h2>
<p className='m-0 max-w-[30ch] text-sm opacity-50'>
Explore starter templates for Next.js.
</p>
</a>

<a
href='https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app'
className='group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30'
target='_blank'
rel='noopener noreferrer'
>
<h2 className='mb-3 text-2xl font-semibold'>
Deploy{' '}
<span className='inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none'>
-&gt;
</span>
</h2>
<p className='m-0 max-w-[30ch] text-balance text-sm opacity-50'>
Instantly deploy your Next.js site to a shareable URL with Vercel.
</p>
</a>
</div>
<main className='h-auto pb-16'>
<Header withUnderline>
<Header.Left>
<Header.Logo />
</Header.Left>
<Header.Right>
<Icon name='bell' />
</Header.Right>
</Header>
<section className='my-4'>
<Banner recentRaffle={RecentRaffles} />
</section>
<section className='mb-4 flex justify-center'>
<CategoryButtons categories={categories} />
</section>
<section className='flex justify-center'>
<RecommendList recommendItems={recommendItems} />
</section>
<BottomNavigation />
</main>
);
}
22 changes: 9 additions & 13 deletions apps/front/wraffle-webview/app/password/find/page.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
'use client';

import {useSendEmail} from 'features/password/api/password';
import {useRouter} from 'next/navigation';
import {useForm} from 'react-hook-form';
import {type EmailPayload, emailObjectSchema} from '@/entities/auth';
import {Form, RHFInput} from '@/shared/ui';
import {Header} from '@/shared/ui';
import BottomFixedBox from '@/shared/ui/bottom/BottomFixedBox';
import type {EmailPayload} from '@/entities/auth';
import {emailObjectSchema} from '@/entities/auth';
import {useSendEmail} from '@/features/password/api';
import {BottomFixedBox, Form, Header, RHFInput} from '@/shared/ui';
import {getDefaults} from '@/shared/util';
import {zodResolver} from '@hookform/resolvers/zod';
import {Button, Toaster, Typography, useToast} from '@wraffle/ui';
import {Button, Typography, useToast} from '@wraffle/ui';

const FindPasswordPage = () => {
const router = useRouter();
Expand Down Expand Up @@ -45,7 +44,6 @@ const FindPasswordPage = () => {

return (
<div>
<Toaster />
<Header>
<Header.BackButton onClick={router.back} />
<Header.Middle>비밀번호 찾기</Header.Middle>
Expand All @@ -54,7 +52,7 @@ const FindPasswordPage = () => {
<Form {...form}>
<form className='px-5' onSubmit={form.handleSubmit(onSubmit)}>
<div>
<Typography className='my-5 text-h2'>
<Typography size='h2' className='my-5'>
비밀번호 설정을 위해 <br />
가입한 이메일을 입력해주세요.
</Typography>
Expand All @@ -66,7 +64,7 @@ const FindPasswordPage = () => {
placeholder='[email protected]'
/>

<Typography className='text-xs text-[#6D7684]'>
<Typography size='sm1' className='text-[#6D7684]'>
*이메일이 수신되지 않거나, 이메일주소가 기억나지 않을 경우
고객센터로 문의주시기 바랍니다.
</Typography>
Expand All @@ -77,14 +75,12 @@ const FindPasswordPage = () => {
className='flex flex-col items-center py-2'
onClick={handleContactCustomerCenter}
>
<Typography className='text-sm text-[#6D7684]'>
<Typography size='p3' className='text-[#6D7684]'>
고객센터 문의
</Typography>
</div>

<Button type='submit' disabled={isFormEmpty}>
이메일 발송
</Button>
<Button disabled={isFormEmpty}>이메일 발송</Button>
</BottomFixedBox>
</form>
</Form>
Expand Down
Loading