Skip to content

Commit ed3bba7

Browse files
committed
feat: add icons and BlurFade to tech stack in projects
1 parent 44c0180 commit ed3bba7

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

site/src/components/Projects.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@ export function Projects({ arr }: ProjectProps) {
1919
</BlurFade>
2020
{projects && projects.length > 0 ? (
2121
<div className="space-y-5">
22-
{projects.map((project, index) => (
23-
<BlurFade
24-
key={index}
25-
delay={BLUR_FADE_DELAY * 12 + index * 0.2}
26-
>
27-
<ProjectTile key={index} {...project} />
28-
</BlurFade>
29-
))}
22+
{
23+
projects.map((project, index) => {
24+
project.delayTime = BLUR_FADE_DELAY * 12 + index * 0.2;
25+
return (
26+
<BlurFade
27+
key={index}
28+
delay={BLUR_FADE_DELAY * 12 + index * 0.2}
29+
>
30+
<ProjectTile key={index} {...project} />
31+
</BlurFade>
32+
)
33+
})
34+
}
3035
</div>
3136
) : (
3237
<p>No projects to display.</p>

site/src/components/Tiles/ProjectTile.tsx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { ArrowUpRight } from 'lucide-react'
22
import { useMediaQuery } from '@/hooks/useMediaQuery'
33
import { Badge } from '@/components/ui/Badge'
4+
import BlurFade, { BLUR_FADE_DELAY } from '@/components/ui/BlurFade';
5+
import { Icon } from '@iconify/react';
6+
import { techIcons } from '@/lib/techIcons';
47

5-
export type ProjectTileProps = {
8+
type ProjectTileDetailProps = {
69
title: string
710
description: string
811
repo: boolean,
@@ -12,7 +15,11 @@ export type ProjectTileProps = {
1215
techStack: string[]
1316
}
1417

15-
export function ProjectTile({ title, description, repo, repoUrl, live, liveUrl, techStack }: ProjectTileProps) {
18+
export type ProjectTileProps = ProjectTileDetailProps & {
19+
delayTime: number;
20+
};
21+
22+
export function ProjectTile({ delayTime, title, description, repo, repoUrl, live, liveUrl, techStack }: ProjectTileProps) {
1623
const isDesktop = useMediaQuery('(min-width: 768px)')
1724
return (
1825
<div className="items-center">
@@ -41,9 +48,22 @@ export function ProjectTile({ title, description, repo, repoUrl, live, liveUrl,
4148
</div>
4249
<p className="text-gray-700 dark:text-gray-300">{description}</p>
4350
{techStack && techStack.length > 0 && (
44-
<div className="mt-1 flex flex-wrap gap-1">
51+
<div className="mt-3 flex flex-wrap gap-1">
4552
{techStack.map((skillText, index) => (
46-
<Badge key={index} variant={`secondary`}>{skillText}</Badge>
53+
<BlurFade
54+
key={index}
55+
delay={delayTime + index * 0.05}
56+
>
57+
<Badge key={index} variant={`secondary`}>
58+
{
59+
techIcons?.[skillText] &&
60+
<span className="mr-2">{
61+
<Icon icon={techIcons[skillText]} inline={true} width={18} height={18}/>
62+
}</span>
63+
}
64+
<span>{skillText}</span>
65+
</Badge>
66+
</BlurFade>
4767
))}
4868
</div>
4969
)}

0 commit comments

Comments
 (0)