Skip to content

Commit afa76db

Browse files
committed
feat: integrate Tooltip into ProjectCard component
1 parent 8b7448e commit afa76db

File tree

5 files changed

+486
-4
lines changed

5 files changed

+486
-4
lines changed

app/(www)/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export default async function IndexPage() {
9898
</div>
9999
</section>
100100

101-
<section className="space-y-6 pb-8 pt-6 md:pb-12 md:pt-10 lg:py-32" id="tools">
101+
<section className="space-y-6 pb-8 pt-6 md:pb-12 md:pt-10 lg:py-32" id="projects">
102102
<div className="flex max-w-5xl flex-col gap-6">
103103
<h2 className="font-heading font-bold tracking-tight text-4xl sm:text-5xl md:text-[4.8rem]">
104104
Projects

components/project-card.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ import {
66
CardHeader,
77
CardTitle
88
} from "@/components/ui/card";
9+
import {
10+
Tooltip,
11+
TooltipContent,
12+
TooltipProvider,
13+
TooltipTrigger,
14+
} from "@/components/ui/tooltip";
915
import { categories } from "@/data/projects";
1016
import { Icons } from "./icons";
1117
import Link from "next/link";
@@ -48,9 +54,18 @@ export function ProjectCard({ title, desc, image, category, url, linkText }: Pro
4854
{ categories.filter((c) => c.title === category).map((cat, i) => {
4955
const Icon = Icons[cat.icon as keyof typeof Icons];
5056
return (
51-
<span key={i} className="flex items-center gap-2">
52-
<Icon className="h-4 w-4 stroke-sky-400 text-sky-400" /> { cat.title }
53-
</span>
57+
<TooltipProvider key={i}>
58+
<Tooltip>
59+
<TooltipTrigger asChild>
60+
<span className="flex items-center gap-2 cursor-help">
61+
<Icon className="h-4 w-4 stroke-sky-400 text-sky-400" /> { cat.title }
62+
</span>
63+
</TooltipTrigger>
64+
<TooltipContent>
65+
<p>{ cat.desc }</p>
66+
</TooltipContent>
67+
</Tooltip>
68+
</TooltipProvider>
5469
)
5570
}
5671
) }

components/ui/tooltip.tsx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use client"
2+
3+
import * as React from "react";
4+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5+
6+
import { cn } from "@/lib/utils";
7+
8+
const TooltipProvider = TooltipPrimitive.Provider
9+
10+
const Tooltip = TooltipPrimitive.Root
11+
12+
const TooltipTrigger = TooltipPrimitive.Trigger
13+
14+
const TooltipContent = React.forwardRef<
15+
React.ElementRef<typeof TooltipPrimitive.Content>,
16+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
17+
>(({ className, sideOffset = 4, ...props }, ref) => (
18+
<TooltipPrimitive.Content
19+
ref={ref}
20+
sideOffset={sideOffset}
21+
className={cn(
22+
"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
23+
className
24+
)}
25+
{...props}
26+
/>
27+
))
28+
TooltipContent.displayName = TooltipPrimitive.Content.displayName
29+
30+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }

0 commit comments

Comments
 (0)