Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions public/onboarding/Alarm.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/onboarding/ArrowIcon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions public/onboarding/CheckIcon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions public/onboarding/PhotoCamera.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions public/onboarding/UnCheckIcon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 4 additions & 5 deletions src/app/(main)/alarm/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@ export default function Alarm() {

return (
<div className={'bg-gray0 min-h-screen'}>
<Header headerType={'dynamic'} title={'알림'} rightElement={<EmptyIcon />} onBack={onBack} />
<div className={'mt-[20px]'}>
<Header headerType={'dynamic'} title={'알림'} rightElement={<EmptyIcon />} onBack={onBack} className={'pt-10'} />
<div className={'h-[100px]'} />
<div className={''}>
<div className={'flex flex-col gap-y-4 px-5'}>
{alarms
? alarms.map((alarm, index) => {
Expand All @@ -97,9 +98,7 @@ export default function Alarm() {
: null}
</div>
</div>
<StopWatchActiveButton />
<NavBar />
<div className={'h-[120px]'} />
<StopWatchActiveButton className={'bottom-5'} />
</div>
);
}
Expand Down
2 changes: 2 additions & 0 deletions src/app/(main)/community/[category]/[id]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,9 @@ const CommunityDetailPage = () => {
setBoardType(postData.postType);
setBoardTypeInit(false);
}}
className={'pt-10'}
/>
<div className={'h-[84px]'} />
{/* 게시글 */}
<section className={'px-5 mt-[20px]'}>
<Profile
Expand Down
8 changes: 5 additions & 3 deletions src/app/(main)/community/[category]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ export default function CommunityCategoryPage() {
) : boardType === 'NORMAL' && isClickedWriteButton ? (
<WriteNormalPost setIsClickedWriteButton={setIsClickedWriteButton} mutate={mutate} />
) : (
<>
<div className={' bg-gray0'}>
{reviewWriteAccess && reviewWriteAccess.result ? (
<WriteReviewModal setIsModalOpen={setIsModalOpen} isModalOpen={isModalOpen} />
) : null}
Expand All @@ -182,9 +182,11 @@ export default function CommunityCategoryPage() {
}}
/>
}
className={'pt-10'}
title={selectedCertificationName}
/>
<div className={'flex flex-col gap-y-4 bg-gray0 min-h-screen'}>
<div className={'h-[158px]'} />
<div className={'flex flex-col gap-y-4 min-h-screen'}>
{/*boardType 변경 메뉴*/}
<BoardTypeMenu
boardType={boardType}
Expand Down Expand Up @@ -217,7 +219,7 @@ export default function CommunityCategoryPage() {
<div className={'h-[120px] bg-gray0'} />
<StopWatchActiveButton />
<NavBar />
</>
</div>
);
}

Expand Down
3 changes: 2 additions & 1 deletion src/app/(main)/community/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ export default function Community() {
return (
<>
<Header />
<div className={' border-t-[1px] border-gray0'}></div>
<div className={'h-[100px]'} />
<div className={'border-t-[1px] border-gray0'}></div>
<div className="grid gap-y-8 m-5 mt-6">
<div className="grid gap-y-2">
<div className="text-primary text-h4">게시판</div>
Expand Down
1 change: 1 addition & 0 deletions src/app/(main)/exam/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ const SolveExamBox = () => {
<RandomMockExamModal setIsRandomMockExamModalOpen={setIsRandomMockExamModalOpen} />
) : null}
<Header headerType={'second'} />
<div className={'h-[146px]'} />
<div className="px-5 py-4">
<div className="flex gap-x-4 justify-between">
<Banner title="지금까지 틀린 문제만 모아봤어요." buttonText="틀린 문제 풀기" href="/exam/wrong" />
Expand Down
3 changes: 2 additions & 1 deletion src/app/(main)/exam/result/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,9 @@ const Result = () => {

return (
<div className={'bg-gray0 min-h-screen'}>
<Header headerType={'dynamic'} title={'성적 리포트'} onBack={onBack}></Header>
<Header headerType={'dynamic'} title={'성적 리포트'} onBack={onBack} className={'pt-10'} />
<MockExamReportHeader isClicked={isClicked} setIsClicked={setIsClicked} />
<div className={'h-[140px]'} />
<div className={'p-5'}>{displayComponentBasedOnExamResults(examResults)}</div>
<div className={'h-[100px]'} />
<StopWatchActiveButton />
Expand Down
2 changes: 1 addition & 1 deletion src/app/(main)/exam/test/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const Test = () => {
setIsAutoSubmitTimeUpModalOpen={setIsAutoSubmitTimeUpModalOpen}
/>
<Question />
<StopWatchActiveButton className={'bottom-20'} />
<StopWatchActiveButton className={'bottom-24'} />
</div>
</>
);
Expand Down
3 changes: 2 additions & 1 deletion src/app/(main)/exam/wrong/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ const IncorrectQuestion = () => {

return (
<>
<Header headerType={'dynamic'} title={'틀린문제 모아보기'}></Header>
<Header headerType={'dynamic'} title={'틀린문제 모아보기'} className={'pt-10'} />
<div className={'h-[80px]'} />
<div className={'flex flex-col bg-gray0 p-5 gap-y-5 min-h-screen'}>
{isLoading && <WrongQuestionListSkeleton />}
{incorrectQuestions
Expand Down
8 changes: 7 additions & 1 deletion src/app/(main)/home/exam-info/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,13 @@ const ExamInfo = () => {

return (
<div className="bg-gray0 min-h-screen">
<Header headerType={'dynamic'} title={'응시정보'} rightElement={registerCertificateButton()}></Header>
<Header
headerType={'dynamic'}
title={'응시정보'}
rightElement={registerCertificateButton()}
className={'pt-10'}
/>
<div className={'h-[80px]'} />
<div className="flex flex-col gap-y-5 m-5 mt-4">
{Object.entries(commonTitle).map(([key, value]) => {
return <ExamInfoItem key={key} Icon={value.Icon} title={value.title} element={renderElement(key)} />;
Expand Down
3 changes: 2 additions & 1 deletion src/app/(main)/home/goal-setting/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,8 @@ const GoalSetting = () => {
</Button>
)
}></Header>
<div className="flex flex-col gap-y-8 pt-20 mx-5 mb-8">
<div className={'h-[98px]'} />
<div className="flex flex-col gap-y-8 mx-5 mb-8">
{/*자격증 선택*/}
{isResetButtonClick ? <SelectCertification /> : null}
{/*목표 점수 설정*/}
Expand Down
1 change: 1 addition & 0 deletions src/app/(main)/home/growth-chart-view/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ const GrowthChartView = () => {
return (
<div className={'bg-gray0 min-h-screen pb-6'}>
<Header title={'성장그래프 자세히보기'} headerType={'dynamic'} onBack={onBack} />
<div className={'h-[80px]'} />
<div className={'relative m-5 flex flex-col gap-y-[24px]'}>
{/*유저별 목표 기간 전체 필터*/}
<section className={'flex flex-col gap-y-[16px]'}>
Expand Down
1 change: 1 addition & 0 deletions src/app/(main)/home/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ function HomeComponents() {
<div className="bg-gray0 h-screen overflow-y-auto">
<Header />
<Header headerType={'second'}></Header>
<div className={'h-[146px]'} />
{userGoals ? (
<div className={'mt-4 px-5 flex flex-col gap-y-5'}>
{goalAchievementData ? (
Expand Down
3 changes: 2 additions & 1 deletion src/app/(main)/mypage/comment/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ export default function MyComment() {

return (
<div className={'bg-gray0'}>
<Header headerType={'dynamic'} title={'내가 작성한 댓글'} rightElement={<EmptyIcon />} />
<Header headerType={'dynamic'} title={'내가 작성한 댓글'} rightElement={<EmptyIcon />} className={'pt-10'} />
<div className={'h-[80px]'} />
<div className={'py-6 min-h-screen'}>
<div className={'relative px-5 flex flex-col gap-y-4 '}>
{/*필터*/}
Expand Down
31 changes: 31 additions & 0 deletions src/app/(main)/mypage/etc/marketing-info/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use client';

import Header from '@/components/common/Header';

const MarketingInformationPage = () => {
return (
<>
<Header headerType={'dynamic'} title={'마케팅 정보 수신 동의'} />
<div className={'h-[90px]'} />
<section className={'px-5 text-h4 font-pre'}>
<p className={'text-h3 font-pre font-semibold'}>[Cercat] 마케팅 목적 개인정보 이용 및 광고 수신 동의</p>
Core 주식회사는 서비스 개선 및 유용한 정보를 제공하기 위해
<br /> 아래와 같이 마케팅 목적의 정보 제공에 대한 동의를 받고자 합니다.
<br />
<br />
<li className={'text-h3 font-pre font-semibold'}>수집 및 이용 항목</li>
이름, 이메일, 휴대전화번호
<br />
<br />
<li className={'text-h3 font-pre font-semibold'}>이용 목적</li>
서비스 관련 이벤트, 프로모션, 신규 기능 안내 등 마케팅 정보 제공 이메일, SMS, 앱 푸시 등을 통한 정보 전달
<br />
<br />
<br />
전달 보유 및 이용 기간 동의 철회 시 또는 회원 탈퇴 시까지 동의 거부 권리 및 불이익 동의를 거부하더라도 서비스
이용에는 제한이 없습니다.
</section>
</>
);
};
export default MarketingInformationPage;
55 changes: 55 additions & 0 deletions src/app/(main)/mypage/etc/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
'use client';

import { useRouter } from 'next/navigation';
import * as React from 'react';
import { SVGProps } from 'react';

import Header from '@/components/common/Header';

const ETCPage = () => {
const router = useRouter();
return (
<div className={'bg-gray0 min-h-screen'}>
<Header headerType={'dynamic'} title={'약관 및 개인정보 처리'} />
<div className={'h-[100px]'} />
<section className={'px-5'}>
<div className={'rounded-[24px] bg-white p-4 flex flex-col gap-y-3'}>
<h4 className={'text-h6 text-gray4'}>약관 및 개인정보 처리</h4>
<div className={'flex flex-col gap-y-2'}>
<button
onClick={() => {
router.push('/mypage/etc/marketing-info');
}}
className={'flex justify-between rounded-[16px] bg-gray0 py-4 px-5 text-h6'}>
마케팅 정보 수신 동의
<MoveIcon />
</button>
<button
onClick={() => {
router.push('/mypage/etc/personal-info');
}}
className={'flex justify-between rounded-[16px] bg-gray0 py-4 px-5 text-h6'}>
개인 정보 처리 방침
<MoveIcon />
</button>
<button
onClick={() => {
router.push('/mypage/etc/terms-agreement');
}}
className={'flex justify-between rounded-[16px] bg-gray0 py-4 px-5 text-h6'}>
서비스 이용 약관
<MoveIcon />
</button>
</div>
</div>
</section>
</div>
);
};
export default ETCPage;

const MoveIcon = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" width={20} height={21} fill="none" {...props}>
<path stroke="#9E9FA1" strokeLinecap="round" strokeLinejoin="round" d="m7.5 5.5 5 5-5 5" />
</svg>
);
92 changes: 92 additions & 0 deletions src/app/(main)/mypage/etc/personal-info/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
'use client';
import Header from '@/components/common/Header';

const PersonalInfoPage = () => {
return (
<>
<Header headerType={'dynamic'} title={'개인 정보 수집 및 이용동의'} />
<div className={'h-[50px]'} />
<div className="px-6 py-8 text-gray-800">
<h1 className="text-2xl font-bold mb-6">개인정보처리방침</h1>

<section className="mb-6">
<h2 className="font-semibold mb-2">제1조 (개인정보의 수집 항목 및 수집 방법)</h2>
<p>회사는 다음의 개인정보를 수집합니다.</p>
<ul className="list-disc list-inside ml-4">
<li>필수 항목: 이름, 이메일 주소, 비밀번호, 닉네임</li>
<li>선택 항목: 생년월일, 프로필 사진, 자격증 관심 분야</li>
<li>수집 방법: 회원가입 및 서비스 이용 시, 이벤트 참여, 고객센터 문의, 쿠키 등</li>
</ul>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제2조 (개인정보의 수집 및 이용 목적)</h2>
<ul className="list-disc list-inside ml-4">
<li>회원가입 및 본인 확인, 이용자 식별 등 서비스 제공</li>
<li>맞춤형 자격증 추천 및 학습 분석</li>
<li>고객 문의 대응 및 서비스 개선</li>
<li>이용 통계 및 분석</li>
<li>이벤트 및 프로모션 정보 제공 (※ 별도 동의 시)</li>
</ul>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제3조 (개인정보의 보유 및 이용기간)</h2>
<p>
개인정보는 수집·이용 목적 달성 시 지체 없이 파기합니다. 단, 관련 법령에 따라 일정 기간 보관될 수 있습니다.
</p>
<ul className="list-disc list-inside ml-4">
<li>계약/청약철회 기록: 5년</li>
<li>소비자 불만/분쟁 기록: 3년</li>
<li>서비스 이용기록: 3개월</li>
</ul>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제4조 (개인정보 제3자 제공 및 처리 위탁)</h2>
<p>
회사는 원칙적으로 개인정보를 제3자에게 제공하지 않습니다. 단, 법령에 따라 예외가 적용될 수 있습니다. 또한
서비스 운영을 위해 외부에 일부 처리를 위탁할 수 있습니다.
</p>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제5조 (이용자의 권리 및 행사 방법)</h2>
<ul className="list-disc list-inside ml-4">
<li>개인정보 열람, 정정, 삭제, 처리정지 요청</li>
<li>마케팅 수신 동의 철회</li>
<li>고객센터 또는 개인정보 보호책임자를 통해 요청 가능</li>
</ul>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제6조 (개인정보 파기 절차 및 방법)</h2>
<p>
보유 기간 경과 또는 처리 목적 달성 시 즉시 파기하며, 전자파일은 복구 불가능한 방식으로, 문서는 분쇄 또는
소각합니다.
</p>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제7조 (쿠키 등의 사용)</h2>
<p>맞춤형 서비스 제공을 위해 쿠키를 사용하며, 이용자는 브라우저 설정을 통해 이를 거부할 수 있습니다.</p>
</section>

<section className="mb-6">
<h2 className="font-semibold mb-2">제8조 (개인정보 보호책임자)</h2>
<ul className="list-inside ml-4">
<li>성명: 황유림</li>
<li>직책: 개인정보 보호책임자</li>
<li>이메일: [email protected]</li>
<li>연락처: 010-7557-9217</li>
</ul>
</section>

<p className="text-sm text-gray-500">
※ 본 방침은 법령 또는 내부 방침에 따라 변경될 수 있으며, 변경 시 사전 고지됩니다.
</p>
</div>
</>
);
};
export default PersonalInfoPage;
Loading