Skip to content

Commit 99480c3

Browse files
authored
Merge pull request #39 from boostcampwm-2024/feature-fe-#5
HoverTrigger 컴포넌트 구현
2 parents 0f8caa3 + 8dcec24 commit 99480c3

File tree

8 files changed

+110
-0
lines changed

8 files changed

+110
-0
lines changed

frontend/public/logo.png

82.8 KB
Loading
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { cn } from "@/lib/utils";
2+
import { useState } from "react";
3+
4+
interface HoverTriggerProps {
5+
className?: string;
6+
children: React.ReactNode;
7+
}
8+
9+
export default function HoverTrigger({
10+
className,
11+
children,
12+
}: HoverTriggerProps) {
13+
const [isHovered, setIsHovered] = useState(false);
14+
15+
const handleMouseEnter = () => {
16+
setIsHovered(true);
17+
};
18+
19+
const handleMouseLeave = () => {
20+
setIsHovered(false);
21+
};
22+
23+
return (
24+
<div
25+
className={cn("h-screen", className)}
26+
onMouseEnter={handleMouseEnter}
27+
onMouseLeave={handleMouseLeave}
28+
>
29+
<div
30+
className={cn(
31+
"transition-transform",
32+
isHovered ? "translate-x-0" : "-translate-x-full",
33+
)}
34+
>
35+
{children}
36+
</div>
37+
</div>
38+
);
39+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import logo from "/logo.png?url";
2+
3+
export default function LogoBtn() {
4+
return (
5+
<div className="h-8 w-8 rounded-md bg-slate-700 p-2">
6+
<img src={logo} />
7+
</div>
8+
);
9+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
interface WorkspaceNavProps {
2+
imageUrl: string;
3+
workspaceTitle: string;
4+
}
5+
6+
export default function WorkspaceNav({
7+
imageUrl,
8+
workspaceTitle,
9+
}: WorkspaceNavProps) {
10+
return (
11+
<div className="flex flex-row items-center justify-center gap-2">
12+
<div className="h-5 w-5 rounded-md">
13+
<img src={imageUrl} />
14+
</div>
15+
<h1 className="text-lg font-bold">{workspaceTitle}</h1>
16+
</div>
17+
);
18+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const noteTitles = ["🌳 그라운드 룰", "🚩 커밋 컨벤션", "🗂️ 데일리 스크럼 "];
2+
3+
export default function NoteList() {
4+
return (
5+
<div className="flex flex-col gap-2">
6+
{noteTitles.map((title) => (
7+
<div>{title}</div>
8+
))}
9+
</div>
10+
);
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import VerticalDivider from "@/components/commons/divider/VerticalDivider";
2+
import WorkspaceNav from "@/components/WorkspaceNav";
3+
import LogoBtn from "@/components/LogoBtn";
4+
5+
import logo from "/logo.png?url";
6+
7+
export default function TopNav() {
8+
return (
9+
<div className="flex items-center gap-2">
10+
<LogoBtn />
11+
<VerticalDivider className="h-3" />
12+
<WorkspaceNav imageUrl={logo} workspaceTitle="프로젝트 Web15" />
13+
</div>
14+
);
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import NoteList from "@/components/sidebar/NoteList";
2+
import TopNav from "@/components/sidebar/TopNav";
3+
import HorizontalDivider from "@/components/commons/divider/HorizontalDivider";
4+
5+
export default function Sidebar() {
6+
return (
7+
<div className="w-64 rounded-lg bg-white p-2">
8+
<div className="font-pretendard text-md flex flex-col gap-3 bg-white p-2 text-black">
9+
<TopNav />
10+
<HorizontalDivider />
11+
<NoteList />
12+
</div>
13+
</div>
14+
);
15+
}
16+
17+
// truncate

frontend/tailwind.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default {
99
pretendard: ["Pretendard"],
1010
},
1111
colors: {
12+
...colors,
1213
divider: colors.neutral["200"],
1314
},
1415
extend: {},

0 commit comments

Comments
 (0)