Skip to content

Commit a397901

Browse files
committed
feat: added icons to badges in skills
1 parent ede94f1 commit a397901

File tree

5 files changed

+64
-50
lines changed

5 files changed

+64
-50
lines changed

site/package-lock.json

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"tailwind-merge": "^2.5.2"
2424
},
2525
"devDependencies": {
26+
"@iconify/react": "^5.0.2",
2627
"@types/node": "^20",
2728
"@types/react": "^18",
2829
"@types/react-dom": "^18",

site/src/components/Skills.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { Badge } from '@/components/ui/Badge';
22
import { useState } from 'react';
33
import BlurFade, { BLUR_FADE_DELAY } from '@/components/ui/BlurFade';
44
import { cn } from '@/lib/utils';
5+
import { Icon } from '@iconify/react';
6+
import { techIcons } from '@/lib/techIcons';
57

68
interface SkillsProps {
79
arr: string[];
@@ -24,7 +26,15 @@ export function Skills({ arr }: SkillsProps) {
2426
key={index}
2527
delay={BLUR_FADE_DELAY * 10 + index * 0.05}
2628
>
27-
<Badge key={index}>{skillText}</Badge>
29+
<Badge key={index}>
30+
{
31+
techIcons?.[skillText] &&
32+
<span className="mr-2">{
33+
<Icon icon={techIcons[skillText]} inline={true} width={18} height={18}/>
34+
}</span>
35+
}
36+
<span>{skillText}</span>
37+
</Badge>
2838
</BlurFade>
2939
))}
3040
</div>

site/src/components/ui/Badge.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { cva, type VariantProps } from "class-variance-authority"
44
import { cn } from "@/lib/utils"
55

66
const badgeVariants = cva(
7-
"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
7+
"flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
88
{
99
variants: {
1010
variant: {

site/src/lib/techIcons.ts

Lines changed: 29 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,30 @@
1-
import { FunctionComponent } from 'react';
2-
import {
3-
PythonOriginal,
4-
JavascriptOriginal,
5-
TypescriptOriginal,
6-
COriginal,
7-
CplusplusOriginal,
8-
GoOriginalWordmark,
9-
Html5OriginalWordmark,
10-
Css3OriginalWordmark,
11-
ROriginal,
12-
DjangoPlain,
13-
FlaskOriginalWordmark,
14-
ReactOriginal,
15-
NodejsOriginalWordmark,
16-
AxiosPlainWordmark,
17-
SocketioOriginalWordmark,
18-
TailwindcssOriginalWordmark,
19-
D3jsOriginal,
20-
JestPlain,
21-
CypressioOriginal,
22-
PytestOriginalWordmark,
23-
NextjsOriginal,
24-
} from 'devicons-react';
25-
26-
27-
export const techIcons: { [key: string]: FunctionComponent } = {
28-
"Python3": PythonOriginal,
29-
"JavaScript (ES6)": JavascriptOriginal,
30-
"TypeScript": TypescriptOriginal,
31-
"C": COriginal,
32-
"C++20": CplusplusOriginal,
33-
"Go": GoOriginalWordmark,
34-
"HTML5": Html5OriginalWordmark ,
35-
"CSS3": Css3OriginalWordmark,
36-
"R": ROriginal,
37-
"Django": DjangoPlain,
38-
"Flask": FlaskOriginalWordmark,
39-
"React": ReactOriginal,
40-
"Next.js": NextjsOriginal,
41-
"Node.js": NodejsOriginalWordmark,
42-
"Axios": AxiosPlainWordmark,
43-
"Socket.IO": SocketioOriginalWordmark,
44-
"TailwindCSS": TailwindcssOriginalWordmark,
45-
"D3.js": D3jsOriginal,
46-
"Jest": JestPlain,
47-
"Cypress": CypressioOriginal,
48-
"Pytest": PytestOriginalWordmark,
1+
export const techIcons: { [key: string]: string } = {
2+
"Python": "devicon:python",
3+
"Python3": "devicon:python",
4+
"JavaScript (ES6)": "devicon:javascript",
5+
"TypeScript": "devicon:typescript",
6+
"C": "devicon:c",
7+
"C++": "devicon:cplusplus",
8+
"C++20": "devicon:cplusplus",
9+
"Go": "logos:go",
10+
"HTML5": "logos:html-5" ,
11+
"CSS3": "logos:css-3",
12+
"R": "devicon:rstudio",
13+
"Django": "vscode-icons:file-type-django",
14+
"Flask": "simple-icons:flask",
15+
"React": "logos:react",
16+
"Next.js": "devicon:nextjs",
17+
"Node.js": "devicon:nodejs",
18+
"Axios": "simple-icons:axios",
19+
"Socket.IO": "simple-icons:socketdotio",
20+
"TailwindCSS": "devicon:tailwindcss",
21+
"D3.js": "logos:d3",
22+
"Jest": "logos:jest",
23+
"Cypress": "devicon-plain:cypressio",
24+
"Pytest": "simple-icons:pytest",
25+
"Postgres": "logos:postgresql",
26+
"MySQL": "fontisto:mysql",
27+
"Docker": "logos:docker-icon",
28+
"Powershell": "vscode-icons:file-type-powershell",
29+
"Bash": "devicon-plain:bash"
4930
}

0 commit comments

Comments
 (0)