Skip to content

Commit d3f400a

Browse files
committed
refactor : LandingLink 컴포넌트 분리
- LandingLink 컴포넌트를 분리하는 리팩토링 진행
1 parent ecd0549 commit d3f400a

File tree

2 files changed

+36
-23
lines changed

2 files changed

+36
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { useModal } from "../../hooks/common/modal/useModal";
2+
import { LandingLinkDTO } from "../../types/DTO/landingDTO";
3+
import LandingLinkBlock from "./LandingLinkBlock";
4+
import Plus from "../../assets/icons/plus.svg?react";
5+
import LandingLinkModal from "./LandingLinkModal";
6+
7+
const LandingLink = ({ link }: { link: LandingLinkDTO[] }) => {
8+
const { open, close } = useModal(true);
9+
const handleCreateLinkClick = () => {
10+
open(<LandingLinkModal close={close} />);
11+
};
12+
13+
return (
14+
<div className="w-full shadow-box rounded-lg flex flex-col pt-6 pl-6 pr-3 bg-gradient-to-tr from-dark-green-linear-from to-dark-green-linear-to">
15+
<div className="flex justify-between items-center pr-3">
16+
<p className="text-white text-m font-bold">| 외부 링크</p>
17+
<button
18+
onClick={handleCreateLinkClick}
19+
className="hover:bg-dark-green rounded-md"
20+
>
21+
<Plus width={24} height={24} stroke="#FFFFFF " />
22+
</button>
23+
</div>
24+
<div className="flex flex-col gap-3 pr-6 py-6 overflow-y-scroll scrollbar-thin scrollbar-thumb-rounded-full scrollbar-thumb-dark-green scrollbar-track-transparent">
25+
{link.map((linkData: LandingLinkDTO) => {
26+
return <LandingLinkBlock {...linkData} key={linkData.id} />;
27+
})}
28+
</div>
29+
</div>
30+
);
31+
};
32+
33+
export default LandingLink;

frontend/src/pages/landing/LandingPage.tsx

+3-23
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
import { useState } from "react";
2-
import { LandingDTO, LandingLinkDTO } from "../../types/DTO/landingDTO";
2+
import { LandingDTO } from "../../types/DTO/landingDTO";
33
import { useParams } from "react-router-dom";
44
import LandingProject from "../../components/landing/LandingProject";
55
import LandingSprint from "../../components/landing/LandingSprint";
66
import LandingMember from "../../components/landing/LandingMember";
7-
import Plus from "../../assets/icons/plus.svg?react";
8-
import LandingLinkBlock from "../../components/landing/LandingLinkBlock";
9-
import { useModal } from "../../hooks/common/modal/useModal";
10-
import LandingLinkModal from "../../components/landing/LandingLinkModal";
7+
import LandingLink from "../../components/landing/LandingLink";
118

129
const sampleData: LandingDTO = {
1310
project: {
@@ -75,11 +72,6 @@ const LandingPage = () => {
7572
if (!projectId) throw Error("Invalid Web URL");
7673
const { project, sprint, member, link } = landingData;
7774

78-
const { open, close } = useModal(true);
79-
const handleCreateLinkClick = () => {
80-
open(<LandingLinkModal close={close} />);
81-
};
82-
8375
return (
8476
<div className="h-full w-full flex flex-col justify-between">
8577
<div className="h-[17.6875rem] w-full shrink-0 flex gap-9">
@@ -89,19 +81,7 @@ const LandingPage = () => {
8981
<div className="h-[20.5625rem] w-full shrink-0 flex gap-9">
9082
<LandingSprint {...{ sprint }} />
9183
<LandingMember {...{ member }} />
92-
<div className="w-full shadow-box rounded-lg flex flex-col pt-6 pl-6 pr-3 bg-gradient-to-tr from-dark-green-linear-from to-dark-green-linear-to">
93-
<div className="flex justify-between items-center pr-3">
94-
<p className="text-white text-m font-bold">| 외부 링크</p>
95-
<button onClick={handleCreateLinkClick}>
96-
<Plus width={24} height={24} stroke="#FFFFFF " />
97-
</button>
98-
</div>
99-
<div className="flex flex-col gap-3 pr-6 py-6 overflow-y-scroll scrollbar-thin scrollbar-thumb-rounded-full scrollbar-thumb-dark-green scrollbar-track-transparent">
100-
{link.map((linkData: LandingLinkDTO) => {
101-
return <LandingLinkBlock {...linkData} key={linkData.id} />;
102-
})}
103-
</div>
104-
</div>
84+
<LandingLink {...{ link }} />
10585
</div>
10686
</div>
10787
);

0 commit comments

Comments
 (0)