Skip to content

Commit 6edc54a

Browse files
authored
Merge pull request #25 from MBTips/feature/TopicRecommend-컴포넌트-개발
feat: TopicRecommend.tsx 개발, pickMbtiImage util함수 구현
2 parents 91afe94 + 2af51fc commit 6edc54a

File tree

4 files changed

+107
-1
lines changed

4 files changed

+107
-1
lines changed

src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ function App() {
22
return <></>;
33
}
44

5-
export default App;
5+
export default App;

src/components/TopicRecommend.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Mbti } from "@/types/mbti";
2+
import pickMbtiImage from "@/utils/pickMbtiImage";
3+
4+
const TopicRecommend = ({ mbti = "ESTP" }: { mbti: Mbti }) => {
5+
const imageUrl = pickMbtiImage(mbti);
6+
7+
return (
8+
<div className="flex flex-col rounded-xl rounded-tl-none w-[208px] h-[213px] overflow-hidden">
9+
<img
10+
className="block w-full h-auto"
11+
src={imageUrl}
12+
alt={mbti}
13+
width={208}
14+
height={88}
15+
/>
16+
<div className="flex flex-col flex-auto justify-center items-center bg-white">
17+
<h2 className="font-bold text-2lg">대화주제추천</h2>
18+
<p className="mt-1 font-light text-lg">{mbti}와 나눌 주제 추천드려요</p>
19+
<button className="flex justify-center items-center bg-gray-900 mt-2 rounded-sm w-[176px] h-[40px] font-medium text-2lg text-white">
20+
자세히보기
21+
</button>
22+
</div>
23+
</div>
24+
);
25+
};
26+
27+
export default TopicRecommend;

src/types/mbti.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export type Mbti =
2+
| "ISTJ"
3+
| "ISFJ"
4+
| "INFJ"
5+
| "INTJ"
6+
| "ISTP"
7+
| "ISFP"
8+
| "INFP"
9+
| "INTP"
10+
| "ESTP"
11+
| "ESFP"
12+
| "ENFP"
13+
| "ENTP"
14+
| "ESTJ"
15+
| "ESFJ"
16+
| "ENFJ"
17+
| "ENTJ";

src/utils/pickMbtiImage.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { Mbti } from "@/types/mbti";
2+
3+
const pickMbtiImage = (mbti: Mbti) => {
4+
let mbtiImage = "";
5+
6+
switch (mbti) {
7+
case "ISTJ":
8+
mbtiImage = "/image/ISTJ.png";
9+
break;
10+
case "ISFJ":
11+
mbtiImage = "/image/ISFJ.png";
12+
break;
13+
case "INFJ":
14+
mbtiImage = "/image/INFJ.png";
15+
break;
16+
case "INTJ":
17+
mbtiImage = "/image/INTJ.png";
18+
break;
19+
case "ISTP":
20+
mbtiImage = "/image/ISTP.png";
21+
break;
22+
case "ISFP":
23+
mbtiImage = "/image/ISFP.png";
24+
break;
25+
case "INFP":
26+
mbtiImage = "/image/INFP.png";
27+
break;
28+
case "INTP":
29+
mbtiImage = "/image/INTP.png";
30+
break;
31+
case "ESTP":
32+
mbtiImage = "/image/ESTP.png";
33+
break;
34+
case "ESFP":
35+
mbtiImage = "/image/ESFP.png";
36+
break;
37+
case "ENFP":
38+
mbtiImage = "/image/ENFP.png";
39+
break;
40+
case "ENTP":
41+
mbtiImage = "/image/ENTP.png";
42+
break;
43+
case "ESTJ":
44+
mbtiImage = "/image/ESTJ.png";
45+
break;
46+
case "ESFJ":
47+
mbtiImage = "/image/ESFJ.png";
48+
break;
49+
case "ENFJ":
50+
mbtiImage = "/image/ENFJ.png";
51+
break;
52+
case "ENTJ":
53+
mbtiImage = "/image/ENTJ.png";
54+
break;
55+
default:
56+
break;
57+
}
58+
59+
return mbtiImage;
60+
};
61+
62+
export default pickMbtiImage;

0 commit comments

Comments
 (0)