Skip to content

Commit 2b7f3d0

Browse files
authored
Merge pull request #162 from MBTips/feature/Header,Navbar-통일하는-작업
feat: 기존에 Header와 Navbar를 하나로 추상화한 Header 컴포넌트 구현 완료
2 parents ce61f1b + b0d7e3a commit 2b7f3d0

File tree

13 files changed

+51
-56
lines changed

13 files changed

+51
-56
lines changed

src/components/Header.tsx

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/components/header/Header.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { useLocation } from "react-router-dom";
2+
import SubHeader from "@/components/header/SubHeader";
3+
import MainHeader from "@/components/header/MainHeader";
4+
import useAuthStore from "@/store/useAuthStore";
5+
6+
type HeaderProps = {
7+
title?: string;
8+
showPreviousIcon?: boolean;
9+
showShareIcon?: boolean;
10+
};
11+
12+
const Header = ({
13+
title = "",
14+
showPreviousIcon = true,
15+
showShareIcon = false
16+
}: HeaderProps) => {
17+
const { pathname } = useLocation();
18+
const { isLoggedIn } = useAuthStore();
19+
const isHomepage = pathname === "/";
20+
21+
return isHomepage ? <MainHeader isLoggedIn={isLoggedIn}/> : <SubHeader title={title} showPreviousIcon={showPreviousIcon} showShareIcon={showShareIcon} />;
22+
};
23+
24+
export default Header;
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { Link } from "react-router-dom";
22
import LoginButton from "../button/LoginButton";
33

4-
const MainHeader = ({isLoggedIn}: {isLoggedIn : string | null})=> {
4+
const MainHeader = ({isLoggedIn}: {isLoggedIn : boolean})=> {
55
return (
6-
<div className="bg-white flex h-[56px] w-full justify-between px-5">
6+
<header className="bg-white flex h-[56px] w-full justify-between px-5">
77
<Link to="/" className="flex items-center">
88
<img
99
src="/public/icon/mbtipslogo.svg"
@@ -12,14 +12,14 @@ const MainHeader = ({isLoggedIn}: {isLoggedIn : string | null})=> {
1212
height={31}
1313
/>
1414
</Link>
15-
{isLoggedIn === "true" ? <LoginButton/> : <img
15+
{isLoggedIn ? <LoginButton/> : <img
1616
src="/public/icon/people.svg"
1717
alt="Login Done"
1818
className="mx-auto mr-[20px]"
1919
width={24}
2020
height={24}
2121
/>}
22-
</div>)
22+
</header>)
2323
}
2424

2525
export default MainHeader;

src/components/header/SubHeader.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import useMbtiTestState from "@/store/useMbtiTestState";
21
import { useLocation, useNavigate } from "react-router-dom"
2+
import useMbtiTestState from "@/store/useMbtiTestState";
33

44

55
type SubHeaderProps = {
@@ -11,21 +11,26 @@ type SubHeaderProps = {
1111
const SubHeader = ({
1212
title = "",
1313
showPreviousIcon = true,
14-
showShareIcon = false
14+
showShareIcon = false,
1515
}: SubHeaderProps) => {
1616

1717
const navigate = useNavigate();
18-
const isProgressPage = useLocation().pathname === "/mbti-test-progress";
18+
const {pathname} = useLocation();
1919
const { currentPage, setPreviousStep } = useMbtiTestState();
20-
const firstQuestionPage = currentPage === 1;
20+
const isProgressPage = pathname === "/mbti-test-progress";
21+
const isChatPage = pathname === "/chat";
22+
const isFirstQuestionPage = currentPage === 1;
2123

2224
const handleGoBack = () => {
23-
if(isProgressPage && !firstQuestionPage) setPreviousStep();
24-
else navigate(-1);
25+
if(isProgressPage && !isFirstQuestionPage) setPreviousStep();
26+
else if(isChatPage) {
27+
// 채팅 취소 모달 오픈 로직 추가 부탁드려요 헤헤 -> 4.9 정준영
28+
}
29+
else if(isFirstQuestionPage) navigate(-1);
2530
};
2631

2732
return (
28-
<div className="relative flex h-[56px] w-full flex-row items-center justify-center border-b border-gray-100 bg-white">
33+
<header className="relative flex h-[56px] w-full flex-row items-center justify-center border-b border-gray-100 bg-white">
2934
{showPreviousIcon && (
3035
<img
3136
src="/public/icon/arrow_left.svg"
@@ -50,7 +55,7 @@ const SubHeader = ({
5055
height={16}
5156
/>
5257
)}
53-
</div>
58+
</header>
5459
);
5560
}
5661

src/pages/Chat.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useEffect, useRef, useState, ChangeEvent, KeyboardEvent } from "react";
22
import IntroGuide from "@/components/IntroGuide";
3-
import Header from "@/components/Header";
3+
import Header from "@/components/header/Header";
44
import ChatMessage from "@/components/ChatMessage";
55
import ChatActionBar from "@/components/ChatActionBar";
66
import pickMbtiImage from "@/utils/pickMbtiImage";

src/pages/Content.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import instance from "@/api/axios";
2-
import Header from "@/components/Header";
2+
import Header from "@/components/header/Header";
33
import { trackEvent } from "@/libs/analytics";
44
import React from "react";
55
import { useParams } from "react-router-dom";

src/pages/Home.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
1-
import { useNavigate } from "react-router-dom";
2-
import Header from "@/components/Header";
31
import Banner from "@/components/Banner";
42
import StrokeBanner from "@/components/StrokeBanner";
53
import SubTitle from "@/components/SubTitle";
64
import ChatStartButton from "@/components/button/ChatStartButton";
5+
import Header from "@/components/header/Header";
76

87
const Home = () => {
98

109
return (
1110
<div className="flex flex-col bg-white w-[360px] md:w-[375px] lg:w-[500px]">
12-
<header>
13-
<Header/>
14-
</header>
15-
11+
<Header/>
1612
<main>
1713
<section aria-label="콘텐츠 배너">
1814
<Banner />
1915
</section>
20-
2116
<section className="mt-5 w-full" aria-label="빠른 대화">
2217
<div className="px-[20px] py-[13px] w-full">
2318
<SubTitle mode="빠른대화" />
@@ -26,7 +21,6 @@ const Home = () => {
2621
<ChatStartButton mode={"go-fast"}/>
2722
</div>
2823
</section>
29-
3024
<section aria-label="친구 목록">
3125
<div className="px-[20px] py-[21px] w-full">
3226
<SubTitle mode="친구목록" />

src/pages/MbtiTestIntro.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ChangeEvent, FormEvent, useState } from "react";
22
import { useNavigate } from "react-router-dom";
3-
import Header from "@/components/Header";
3+
import Header from "@/components/header/Header";
44
const MbtiTestIntro = () => {
55
const [name, setName] = useState("");
66
const navigate = useNavigate();

src/pages/MbtiTestQuestions.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { TEST_QNA } from "@/constants/TEST_QNA";
22
import MbtiAnswerButtons from "@/components/button/MbtiAnswerButtons";
33
import useMbtiTestState from "@/store/useMbtiTestState";
4-
import Header from "@/components/Header";
4+
import Header from "@/components/header/Header";
55

66
interface content {
77
number: number;

src/pages/MbtiTestResult.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { MouseEvent } from "react";
22
import { MBTI_RESULT_INFO } from "@/constants/MBTI_RESULT_INFO";
33
import ShareButton from "@/components/button/ShareButton";
44
import RestartButton from "@/components/button/RestartButton";
5-
import Header from "@/components/Header";
65
import ChatStartButton from "@/components/button/ChatStartButton";
76
import useLayoutSize from "@/hooks/useLayoutSize";
7+
import Header from "@/components/header/Header";
88

99
const MbtiTestResult = () => {
1010

0 commit comments

Comments
 (0)