diff --git a/src/pages/mypage/index.tsx b/src/pages/mypage/index.tsx
index 4aaf58e..f54ea2b 100644
--- a/src/pages/mypage/index.tsx
+++ b/src/pages/mypage/index.tsx
@@ -11,21 +11,52 @@ import { FaUser } from 'react-icons/fa6';
import { IoIosListBox } from 'react-icons/io';
import { useNavigate } from 'react-router-dom';
+import { useAlert } from '@/hooks/useAlert';
+import { useModal } from '@/hooks/useModal';
+
export default function MyPage() {
const navigate = useNavigate();
const { mutate } = useDeleteUser();
const { toast } = useToast();
+ const { alert } = useAlert();
+ const { open, close } = useModal();
const deleteAccount = () => {
- mutate();
+ open(<>탈퇴하시겠습니까?>, {
+ accept: {
+ text: '확인',
+ onClick: () => {
+ mutate();
+ },
+ },
+ cancel: {
+ text: '취소',
+ onClick: () => {
+ close();
+ },
+ },
+ });
};
const logout = () => {
- removeToken();
- toast({
- title: '로그아웃 되었습니다.',
+ open(<>로그아웃하시겠습니까?>, {
+ accept: {
+ text: '확인',
+ onClick: () => {
+ removeToken();
+ toast({
+ title: '로그아웃되었습니다.',
+ });
+ navigate(ROUTES.MAIN);
+ },
+ },
+ cancel: {
+ text: '취소',
+ onClick: () => {
+ close();
+ },
+ },
});
- navigate(ROUTES.MAIN);
};
return (
@@ -39,7 +70,7 @@ export default function MyPage() {
key={id}
className='flex flex-col items-center text-4xl cursor-pointer'
onClick={() => {
- id === 'edit' ? navigate('password') : navigate(id);
+ id === 'edit' ? navigate('password') : alert('준비 중입니다');
}}
>
{icon}
diff --git a/src/pages/notice/[id].tsx b/src/pages/notice/[id].tsx
index 3e60a0f..576bb62 100644
--- a/src/pages/notice/[id].tsx
+++ b/src/pages/notice/[id].tsx
@@ -1,47 +1,35 @@
-import Carousel from '@components/common/carousel';
+import { Gnb, GnbGoBack, GnbTitle } from '@components/common/gnb';
+import { GnhTitle } from '@components/common/gnh';
+import { HeaderSection, ContentSection } from '@components/layouts';
import PostDetailLayout from '@components/layouts/PostDetailLayout';
-import PostBox, { FileBox } from '@components/ui/box/PostBox';
-import Collapse from '@components/ui/collapse';
-import { HEADING_TEXT, HEADING_STYLE } from '@constants/heading';
-import { useGetNoticeItem } from '@hooks/api/notice/useGetNoticeItem';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
+import NoticeItem from '@components/notice/[id]';
+import Selector from '@components/ui/selector';
+import { HEADING_TEXT, COUNCIL_LIST } from '@constants/heading';
import React from 'react';
import { useParams } from 'react-router-dom';
-export default function NoticeDetail() {
- const { setLayout } = useLayout();
- const params = useParams();
- const id = params.id;
- const noticeId = id?.toString();
-
- useEffectOnce(() => {
- setLayout({
- title: HEADING_TEXT.COUNCIL.HEAD,
- backButton: true,
- isMain: false,
- fullscreen: false,
- headingText: HEADING_TEXT.COUNCIL.HEAD,
- subHeadingText: HEADING_TEXT.NOTICE.SUBHEAD,
- headingStyle: HEADING_STYLE.COUNCIL.HEAD,
- subHeadingStyle: HEADING_STYLE.COUNCIL.SUBHEAD,
- rounded: true,
- dropDown: HEADING_STYLE.COUNCIL.DROPDOWN,
- });
- });
- const { data: notice } = useGetNoticeItem(noticeId as string);
+export default function NoticeDetail() {
+ const params = useParams();
+ const id = params.id as string;
+ const noticeId = id.toString();
+
return (
-
-
-
-
-
- {notice.title}
- {notice.body}
-
- {notice.files.length && }
-
+
+
+
+ {HEADING_TEXT.COUNCIL.HEAD}
+
+
+ {HEADING_TEXT.COUNCIL.HEAD}
+
+
+
+
+
+
+
+
);
}
diff --git a/src/pages/notice/index.tsx b/src/pages/notice/index.tsx
index 2e38dbb..58b8a14 100644
--- a/src/pages/notice/index.tsx
+++ b/src/pages/notice/index.tsx
@@ -1,54 +1,29 @@
-import Board from '@components/ui/board';
-import IntersectionBox from '@components/ui/box/intersectionBox';
-import ItemList from '@components/ui/item-list';
-import { Spinner } from '@components/ui/spinner/indext';
-import { HEADING_TEXT, HEADING_STYLE } from '@constants/heading';
-import { ROUTES } from '@constants/route';
-import { useGetNoticeList } from '@hooks/api/notice/useGetNoticeList';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useInfiniteScroll } from '@hooks/useInfiniteScroll';
-import { useLayout } from '@hooks/useLayout';
-import React from 'react';
-import { useNavigate } from 'react-router-dom';
+import { Gnb, GnbGoBack, GnbTitle } from '@components/common/gnb';
+import { GnhTitle } from '@components/common/gnh';
+import { HeaderSection, ContentSection } from '@components/layouts';
+import Selector from '@components/ui/selector';
+import NoticeSkeleton from '@components/ui/skeleton/notice';
+import { HEADING_TEXT, COUNCIL_LIST } from '@constants/heading';
+import React, { Fragment, Suspense, lazy } from 'react';
-export default function NoticeBoard() {
- const { setLayout } = useLayout();
-
- useEffectOnce(() => {
- setLayout({
- title: HEADING_TEXT.COUNCIL.HEAD,
- backButton: true,
- isMain: false,
- fullscreen: false,
- headingText: HEADING_TEXT.COUNCIL.HEAD,
- subHeadingText: HEADING_TEXT.NOTICE.SUBHEAD,
- headingStyle: HEADING_STYLE.COUNCIL.HEAD,
- subHeadingStyle: HEADING_STYLE.COUNCIL.SUBHEAD,
- rounded: true,
- dropDown: HEADING_STYLE.COUNCIL.DROPDOWN,
- });
- });
-
- const navigate = useNavigate();
- const { data: notice, fetchNextPage, isFetchingNextPage } = useGetNoticeList();
- const intersectionRef = useInfiniteScroll(fetchNextPage);
-
- const goToNoticeDetail = (itemId: number) => {
- const noticeId = itemId.toString();
- navigate(ROUTES.NOTICE.ID(noticeId));
- };
+const NoticeList = lazy(() => import('@components/notice/index'));
+export default function NoticeBoard() {
return (
-
- {notice?.pages.map((page) =>
- page.content.map((item) => (
- goToNoticeDetail(item.id)}>
-
-
- )),
- )}
-
- {isFetchingNextPage && }
-
+
+
+
+ {HEADING_TEXT.COUNCIL.HEAD}
+
+
+ {HEADING_TEXT.COUNCIL.HEAD}
+
+
+
+ }>
+
+
+
+
);
}
diff --git a/src/pages/notice/post.tsx b/src/pages/notice/post.tsx
index 12cf4e0..93aa51a 100644
--- a/src/pages/notice/post.tsx
+++ b/src/pages/notice/post.tsx
@@ -1,3 +1,6 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { GnhTitle } from '@components/common/gnh';
+import { HeaderSection, ContentSection } from '@components/layouts';
import Post from '@components/main/post';
import { usePostNoticeForm } from '@hooks/api/notice/usePostNoticeForm';
import { PostFormInfo } from '@hooks/api/notice/usePostNoticeForm';
@@ -5,6 +8,7 @@ import { useFormUpload } from '@hooks/useFormUpload';
import useImageUpload from '@hooks/useImageUpload';
import React from 'react';
+
export default function NoticePost() {
const initFormInfo: PostFormInfo = {
title: '',
@@ -13,7 +17,6 @@ export default function NoticePost() {
};
const { formInfo, setFormInfo, handleUpdate } = useFormUpload(initFormInfo);
-
const { mutate } = usePostNoticeForm();
const handleSubmit = (e: React.FormEvent
) => {
@@ -32,15 +35,25 @@ export default function NoticePost() {
const { imageList, addImage, deleteImage } = useImageUpload();
return (
-
+
+
+
+
+
+ 공지
+
+
+
+
+
);
}
diff --git a/src/pages/petition/[id].tsx b/src/pages/petition/[id].tsx
index a569a29..5f3c322 100644
--- a/src/pages/petition/[id].tsx
+++ b/src/pages/petition/[id].tsx
@@ -1,19 +1,21 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { GnhTitle } from '@components/common/gnh';
+import { ContentSection, HeaderSection } from '@components/layouts';
import PostDetailLayout from '@components/layouts/PostDetailLayout';
-import PostBox, { FileBox } from '@components/ui/box/PostBox';
+import FileBox from '@components/ui/box/FileBox';
+import PostBox from '@components/ui/box/PostBox';
import FloatingButton from '@components/ui/button/FloatingButton';
import DoughnutChart from '@components/ui/chart/DoughnutChart';
import PetitonChartList from '@components/ui/chart/PetitionChartList';
import Collapse from '@components/ui/collapse';
import { Spinner } from '@components/ui/spinner/indext';
import { API_PATH } from '@constants/api';
-import { HEADING_TEXT, HEADING_STYLE } from '@constants/heading';
+import { HEADING_TEXT } from '@constants/heading';
import { useGetPetitionItem } from '@hooks/api/petition/useGetPetitionItem';
import { PetitionContentResponse } from '@hooks/api/petition/useGetPetitionItem';
import { StatistResponse } from '@hooks/api/petition/useGetPetitionItem';
import { useAlert } from '@hooks/useAlert';
import { useApi } from '@hooks/useApi';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React, { ComponentProps, ReactNode, useEffect, useState, Suspense } from 'react';
import { TbThumbUp, TbThumbUpFilled } from 'react-icons/tb';
import { useParams } from 'react-router-dom';
@@ -23,23 +25,9 @@ import { getDaysBetween, getPetitionStatus } from '.';
import { WithReactChildren } from '@/types/default-interfaces';
export default function PetitionDetail() {
- const { setLayout } = useLayout();
const params = useParams();
const id = params.id;
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: false,
- headingText: HEADING_TEXT.PETITION.HEAD,
- headingStyle: `${HEADING_STYLE.COUNCIL.HEAD} mb-[30px]`,
- rounded: true,
- dropDown: HEADING_STYLE.COUNCIL.DROPDOWN,
- });
- });
-
const [updatePost, setUpdatePost] = useState(false);
const [chartData, setChartData] = useState({ labels: [''], data: [0] });
@@ -104,62 +92,76 @@ export default function PetitionDetail() {
};
return (
- }>
- {petition !== undefined && (
-
- {/* 청원글 */}
-
-
- {petitionStatus}
-
- {remainingDays !== undefined && remainingDays > 0
- ? `D-${remainingDays}`
- : '기간 만료'}
-
- {`${petition.agreeCount}/150`}
-
- {petition.title}
- {petition.body}
-
-
- {/* 첨부파일 */}
- {petition.files.length > 0 && }
-
- {/* 동의현황 */}
-
- 동의현황}>
-
- 어떤 과에서 가장 동의를 많이 했을까요?
-
-
-
+
+
+
+
+
+ {HEADING_TEXT.PETITION.HEAD}
+
+
+ }>
+ {petition !== undefined && (
+
+ {/* 청원글 */}
+
+
+ {petitionStatus}
+
+ {remainingDays !== undefined && remainingDays > 0
+ ? `D-${remainingDays}`
+ : '기간 만료'}
+
+ {`${petition.agreeCount}/150`}
+
+ {petition.title}
+ {petition.body}
+
+
+ {/* 첨부파일 */}
+ {petition.files.length > 0 && }
+
+ {/* 동의현황 */}
+
+ 동의현황}
+ >
+
+ 어떤 과에서 가장 동의를 많이 했을까요?
+
+
+
+
+
-
-
-
- {/* 답변 */}
- {petition.answer !== null && (
-
- 총학생회 답변
- {petition.answer}
-
- )}
- {/* 플로팅 버튼 */}
- {
- handleAgreeButtonClick();
- }}
- >
- {petition.agree ? (
-
- ) : (
-
- )}
-
-
- )}
-
+ {/* 답변 */}
+ {petition.answer !== null && (
+
+ 총학생회 답변
+ {petition.answer}
+
+ )}
+
+ {/* 플로팅 버튼 */}
+ {
+ handleAgreeButtonClick();
+ }}
+ >
+ {petition.agree ? (
+
+ ) : (
+
+ )}
+
+
+ )}
+
+
+
);
}
diff --git a/src/pages/petition/index.tsx b/src/pages/petition/index.tsx
index ce4e9cf..3d81c33 100644
--- a/src/pages/petition/index.tsx
+++ b/src/pages/petition/index.tsx
@@ -1,19 +1,18 @@
-import Board from '@components/ui/board';
-import IntersectionBox from '@components/ui/box/intersectionBox';
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { GnhTitle } from '@components/common/gnh';
+import { HeaderSection, ContentSection } from '@components/layouts';
import FloatingButton from '@components/ui/button/FloatingButton';
-import { Spinner } from '@components/ui/spinner/indext';
-import { HEADING_TEXT, HEADING_STYLE } from '@constants/heading';
+import CouncilSkeleton from '@components/ui/skeleton/council';
+import { HEADING_TEXT } from '@constants/heading';
import { ROUTES } from '@constants/route';
-import { useGetPetition } from '@hooks/api/petition/useGetPetiition';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useInfiniteScroll } from '@hooks/useInfiniteScroll';
-import { useLayout } from '@hooks/useLayout';
import { isLoggedIn } from '@utils/token';
-import React from 'react';
+import React, { Suspense, lazy } from 'react';
import { useNavigate } from 'react-router-dom';
import { PetitionType } from '@/types/petition';
+const PetitionList = lazy(() => import('@components/petition/index'));
+
export const getDaysBetween = (expiresAt: string) => {
const startDate = new Date();
const endDate = new Date(expiresAt);
@@ -35,48 +34,20 @@ export const getPetitionStatus = (status: PetitionType) => {
export default function PetitionBoard() {
const navigate = useNavigate();
- const { setLayout } = useLayout();
- const { data: petition, fetchNextPage, isFetchingNextPage } = useGetPetition();
- const intersectionRef = useInfiniteScroll(fetchNextPage);
-
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: false,
- headingText: HEADING_TEXT.PETITION.HEAD,
- headingStyle: `${HEADING_STYLE.COUNCIL.HEAD} mb-[30px]`,
- rounded: true,
- dropDown: HEADING_STYLE.COUNCIL.DROPDOWN,
- });
- });
-
- const goToPetitionDetail = (itemId: number) => {
- navigate(ROUTES.PETITION.ID(itemId.toString()));
- };
return (
-
- {petition?.pages.map((page) =>
- page.content.map((item) => (
- goToPetitionDetail(item.id)}>
-
-
{getPetitionStatus(item.status)}
-
{item.title}
-
- {getDaysBetween(item.expiresAt!) > 0
- ? `D-${getDaysBetween(item.expiresAt!)}`
- : '만료'}
-
-
-
- )),
- )}
-
- {isFetchingNextPage && }
-
+
+
+
+
+ {HEADING_TEXT.PETITION.HEAD}
+
+
+ }>
+
+
+
{isLoggedIn && (
{
diff --git a/src/pages/reset/resetId.tsx b/src/pages/reset/resetId.tsx
index c87fa17..141acb0 100644
--- a/src/pages/reset/resetId.tsx
+++ b/src/pages/reset/resetId.tsx
@@ -1,26 +1,20 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { ContentSection } from '@components/layouts';
import IdForm from '@components/reset/id';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
-export default function ResetId() {
- const { setLayout } = useLayout();
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: false,
- margin: '140px',
- rounded: true,
- });
- });
+export default function ResetId() {
return (
- Login
- ID 찾기
-
+
+
+
+
+ Login
+ ID 찾기
+
+
);
}
diff --git a/src/pages/reset/resetIdPw.tsx b/src/pages/reset/resetIdPw.tsx
index e729802..cb30668 100644
--- a/src/pages/reset/resetIdPw.tsx
+++ b/src/pages/reset/resetIdPw.tsx
@@ -1,14 +1,15 @@
import Box from '@components/ui/box';
import { Button } from '@components/ui/button';
-import { HEADING_TEXT, HEADING_STYLE } from '@constants/heading';
+import { HEADING_TEXT } from '@constants/heading';
import { ROUTES } from '@constants/route';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom';
+import { Gnb, GnbGoBack } from '@/components/common/gnb';
+import { GnhSubtitle, GnhTitle } from '@/components/common/gnh';
+import { ContentSection, HeaderSection } from '@/components/layouts';
+
export default function ResetIdPw() {
- const { setLayout } = useLayout();
const navigate = useNavigate();
const [searchParams] = useSearchParams();
@@ -20,44 +21,39 @@ export default function ResetIdPw() {
navigate(`${ROUTES.RESET.PW_VERIFY}?${searchParams.toString()}`);
};
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: false,
- headingText: HEADING_TEXT.LOGIN.HEAD,
- subHeadingText: HEADING_TEXT.RESET_ID_PW.SUBHEAD,
- headingStyle: HEADING_STYLE.RESET.HEAD,
- subHeadingStyle: HEADING_STYLE.RESET.SUBHEAD,
- rounded: true,
- });
- });
-
return (
-
-
+
+
+
+
+
+ {HEADING_TEXT.LOGIN.HEAD}
+ {HEADING_TEXT.RESET_ID_PW.SUBHEAD}
+
+
+
+
+ ID 찾기
+
+ {'잃어버린 ID에 대해서 휴대전화 번호를 입력하면,\n 문자를 통해서 ID를 제공 받습니다.'}
+
+
+
+
- ID 찾기
-
- {'잃어버린 ID에 대해서 휴대전화 번호를 입력하면,\n 문자를 통해서 ID를 제공 받습니다.'}
+
PW 재설정
+
+ {
+ '잃어버린 PW에 대해서 휴대전화번호를 입력하면,\n 인증번호 제공을 통해 새로운 비밀번호를 설정합니다.'
+ }
-
-
-
- PW 재설정
-
- {
- '잃어버린 PW에 대해서 휴대전화번호를 입력하면,\n 인증번호 제공을 통해 새로운 비밀번호를 설정합니다.'
- }
-
-
-
+
+
+
);
}
diff --git a/src/pages/reset/resetPw.tsx b/src/pages/reset/resetPw.tsx
index 3667313..39bd461 100644
--- a/src/pages/reset/resetPw.tsx
+++ b/src/pages/reset/resetPw.tsx
@@ -1,26 +1,15 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { ContentSection } from '@components/layouts';
import ResetPwForm from '@components/reset/pw';
import { ROUTES } from '@constants/route';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
import { useLocation, useNavigate } from 'react-router-dom';
+
export default function ResetPw() {
const location = useLocation();
const navigate = useNavigate();
const { state } = location;
- const { setLayout } = useLayout();
-
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: false,
- margin: '140px',
- rounded: true,
- });
- });
React.useEffect(() => {
if (!state) {
@@ -31,9 +20,14 @@ export default function ResetPw() {
return (
- Login
- PW 재설정
-
+
+
+
+
+ Login
+ PW 재설정
+
+
);
}
diff --git a/src/pages/reset/verifyPw.tsx b/src/pages/reset/verifyPw.tsx
index 45a4a39..5a86748 100644
--- a/src/pages/reset/verifyPw.tsx
+++ b/src/pages/reset/verifyPw.tsx
@@ -1,27 +1,20 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { ContentSection } from '@components/layouts';
import PwVerifyForm from '@components/reset/code';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
-export default function VerifyPw() {
- const { setLayout } = useLayout();
-
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: false,
- margin: '140px',
- rounded: true,
- });
- });
+export default function VerifyPw() {
return (
- Login
- PW 재설정
-
+
+
+
+
+ Login
+ PW 재설정
+
+
);
}
diff --git a/src/pages/rule/index.tsx b/src/pages/rule/index.tsx
index 4ccba47..091c604 100644
--- a/src/pages/rule/index.tsx
+++ b/src/pages/rule/index.tsx
@@ -1,54 +1,31 @@
-import Board from '@components/ui/board';
-import IntersectionBox from '@components/ui/box/intersectionBox';
-import { Spinner } from '@components/ui/spinner/indext';
-import { Date } from '@components/ui/text/board';
-import { HEADING_TEXT, HEADING_STYLE } from '@constants/heading';
-import { useGetRule } from '@hooks/api/rule/useGetRule';
-import { RuleContentResponse } from '@hooks/api/rule/useGetRule';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useInfiniteScroll } from '@hooks/useInfiniteScroll';
-import { useLayout } from '@hooks/useLayout';
-import React from 'react';
+import { Gnb, GnbGoBack, GnbTitle } from '@components/common/gnb';
+import { GnhTitle } from '@components/common/gnh';
+import { ContentSection, HeaderSection } from '@components/layouts';
+import Selector from '@components/ui/selector';
+import ConferenceSkeleton from '@components/ui/skeleton/conference';
+import { HEADING_TEXT, COUNCIL_LIST } from '@constants/heading';
+import React, { Suspense, lazy } from 'react';
-export default function RuleBoard() {
- const { setLayout } = useLayout();
- const { data: rule, fetchNextPage, isFetchingNextPage } = useGetRule();
-
- const intersectionRef = useInfiniteScroll(fetchNextPage);
- useEffectOnce(() => {
- setLayout({
- title: HEADING_TEXT.COUNCIL.HEAD,
- backButton: true,
- isMain: false,
- fullscreen: false,
- headingText: HEADING_TEXT.COUNCIL.HEAD,
- subHeadingText: HEADING_TEXT.RULE.SUBHEAD,
- headingStyle: HEADING_STYLE.COUNCIL.HEAD,
- subHeadingStyle: HEADING_STYLE.COUNCIL.SUBHEAD,
- rounded: true,
- dropDown: HEADING_STYLE.COUNCIL.DROPDOWN,
- });
- });
+const RuleList = lazy(() => import('@components/rule/index'));
- const openFile = (item: RuleContentResponse) => {
- window.open(item.files[0].url);
- };
+export default function RuleBoard() {
return (
-
- {rule?.pages.map((page) =>
- page.content.map((item) => (
- openFile(item)}>
-
-
- )),
- )}
-
- {isFetchingNextPage && }
-
+
+
+
+ {HEADING_TEXT.COUNCIL.HEAD}
+
+
+ {HEADING_TEXT.COUNCIL.HEAD}
+
+
+
+ }>
+
+
+
+
);
}
diff --git a/src/pages/signup/index.tsx b/src/pages/signup/index.tsx
index 8ade374..c0ace4f 100644
--- a/src/pages/signup/index.tsx
+++ b/src/pages/signup/index.tsx
@@ -1,28 +1,23 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { ContentSection } from '@components/layouts';
import VerifyForm from '@components/signup/verify';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
-export default function SignupVerify() {
- const { setLayout } = useLayout();
-
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: true,
- margin: '140px',
- rounded: true,
- });
- });
+export default function SignupVerify() {
return (
-
-
Sign up
- 단국대학교 총학생회 회원가입
- 학생 인증
-
-
+
+
+
+
+
+
+
Sign up
+ 단국대학교 총학생회 회원가입
+ 학생 인증
+
+
+
+
);
}
diff --git a/src/pages/signup/info.tsx b/src/pages/signup/info.tsx
index e4fde70..9a576a4 100644
--- a/src/pages/signup/info.tsx
+++ b/src/pages/signup/info.tsx
@@ -1,11 +1,12 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { ContentSection } from '@components/layouts';
import InfoForm from '@components/signup/info';
import { ROUTES } from '@constants/route';
import { useAlert } from '@hooks/useAlert';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React, { useCallback } from 'react';
import { useNavigate, useLocation } from 'react-router-dom';
+
export default function SignupInfo() {
const navigate = useNavigate();
const location = useLocation();
@@ -13,18 +14,6 @@ export default function SignupInfo() {
const { state } = location || {};
const data = state?.data ?? null;
const signupToken = data?.signupToken ?? null;
- const { setLayout } = useLayout();
-
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: true,
- margin: '41px',
- rounded: true,
- });
- });
const handleVerify = useCallback(() => {
if (!data) {
@@ -38,11 +27,18 @@ export default function SignupInfo() {
}, [handleVerify]);
return (
-
-
Sign up
- 단국대학교 총학생회 회원가입
- 회원 정보 입력
-
-
+
+
+
+
+
+
+
Sign up
+ 단국대학교 총학생회 회원가입
+ 회원 정보 입력
+
+
+
+
);
}
diff --git a/src/pages/signup/success.tsx b/src/pages/signup/success.tsx
index 48499ba..1b80c34 100644
--- a/src/pages/signup/success.tsx
+++ b/src/pages/signup/success.tsx
@@ -1,45 +1,33 @@
import SvgIcon from '@components/common/icon/SvgIcon';
import { Button } from '@components/ui/button';
import { ROUTES } from '@constants/route';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
import { useNavigate } from 'react-router-dom';
+import { ContentSection, HeaderSection } from '@/components/layouts';
+
export default function SignupSuccess() {
- const { setLayout } = useLayout();
const navigate = useNavigate();
const handleGoLogin = () => {
navigate(ROUTES.LOGIN);
};
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: true,
- margin: '140px',
- rounded: true,
- });
- });
return (
-
-
-
-
회원가입 완료
-
회원가입이 완료되었습니다.
-
- 로그인하러 가기
-
-
-
+ <>
+ .
+
+
+
+
+
회원가입 완료
+
회원가입이 완료되었습니다.
+
+ 로그인하러 가기
+
+
+
+
+ >
);
}
diff --git a/src/pages/signup/terms.tsx b/src/pages/signup/terms.tsx
index 3ebd06a..f7b9a2f 100644
--- a/src/pages/signup/terms.tsx
+++ b/src/pages/signup/terms.tsx
@@ -1,28 +1,23 @@
+import { Gnb, GnbGoBack } from '@components/common/gnb';
+import { ContentSection } from '@components/layouts';
import Term from '@components/signup/term';
-import { useEffectOnce } from '@hooks/useEffectOnce';
-import { useLayout } from '@hooks/useLayout';
import React from 'react';
-export default function SignupTerms() {
- const { setLayout } = useLayout();
-
- useEffectOnce(() => {
- setLayout({
- title: null,
- backButton: true,
- isMain: false,
- fullscreen: true,
- margin: '30px',
- rounded: true,
- });
- });
+export default function SignupTerms() {
return (
-
-
Sign up
- 단국대학교 총학생회 회원가입
- 이용약관동의
-
-
+
+
+
+
+
+
+
Sign up
+ 단국대학교 총학생회 회원가입
+ 이용약관동의
+
+
+
+
);
}