"use client"; import Image from "next/image"; import { FadeIn } from "./fade-in"; import { CV_DATA } from "@/lib/cv-data"; const DEVICONS = "https://cdn.jsdelivr.net/gh/devicons/devicon/icons"; const SIMPLE = "https://cdn.simpleicons.org"; const FLAGS = "https://cdn.jsdelivr.net/gh/lipis/flag-icons/flags/4x3"; const SKILL_ICONS: Record = { // Languages Python: `${DEVICONS}/python/python-original.svg`, TypeScript: `${DEVICONS}/typescript/typescript-original.svg`, JavaScript: `${DEVICONS}/javascript/javascript-original.svg`, "C#": `${DEVICONS}/csharp/csharp-original.svg`, C: `${DEVICONS}/c/c-original.svg`, "C++": `${DEVICONS}/cplusplus/cplusplus-original.svg`, HTML: `${DEVICONS}/html5/html5-original.svg`, CSS: `${DEVICONS}/css3/css3-original.svg`, // Frameworks "Next.js": `${DEVICONS}/nextjs/nextjs-original.svg`, React: `${DEVICONS}/react/react-original.svg`, "Tailwind CSS": `${SIMPLE}/tailwindcss/06B6D4`, Angular: `${DEVICONS}/angularjs/angularjs-original.svg`, "Angular Material": `${SIMPLE}/angular/DD0031`, Redux: `${SIMPLE}/redux/764ABC`, "ASP.NET": `${SIMPLE}/dotnet/512BD4`, "ASP.NET Core": `${SIMPLE}/dotnet/512BD4`, // Databases "Microsoft SQL Server": `${DEVICONS}/microsoftsqlserver/microsoftsqlserver-plain.svg`, Oracle: `${DEVICONS}/oracle/oracle-original.svg`, MySQL: `${DEVICONS}/mysql/mysql-original.svg`, MariaDB: `${DEVICONS}/mariadb/mariadb-original.svg`, // Tools Claude: `${SIMPLE}/anthropic/c5a880`, "Claude Code": `${SIMPLE}/anthropic/c5a880`, Git: `${DEVICONS}/git/git-original.svg`, GitHub: `${SIMPLE}/github/ffffff`, Supabase: `${SIMPLE}/supabase/3ECF8E`, Obsidian: `${SIMPLE}/obsidian/7C3AED`, NotebookLM: `${SIMPLE}/googlegemini/8E75B2`, }; const BADGE_ICONS: Record = { ChatGPT: "AI", Neon: "N", Vercel: "▲", }; const LANGUAGE_ICONS: Record = { Nederlands: `${FLAGS}/nl.svg`, Engels: `${FLAGS}/gb.svg`, Duits: `${FLAGS}/de.svg`, }; const LANGUAGE_PROGRESS: Record = { Nederlands: 100, Engels: 85, Duits: 55, }; function SkillPill({ label }: { label: string }) { const icon = SKILL_ICONS[label] ?? LANGUAGE_ICONS[label]; const badge = BADGE_ICONS[label]; const isLanguage = label in LANGUAGE_ICONS; return ( {icon && ( {label} )} {!icon && badge && ( {badge} )} {label} ); } function LanguageProgress({ label }: { label: string }) { const icon = LANGUAGE_ICONS[label]; const progress = LANGUAGE_PROGRESS[label] ?? 0; return (
{icon && ( {label} )} {label}
); } const SKILL_GROUPS = [ { title: "Programmeertalen", items: CV_DATA.skills.languages }, { title: "Frameworks", items: CV_DATA.skills.frameworks }, { title: "Databases", items: CV_DATA.skills.databases }, { title: "AI / AI-tools", items: CV_DATA.skills.aiTools }, { title: "Talen", items: CV_DATA.skills.spoken }, ]; export function SkillsSection() { return (

Technologie

Skills & Tools

{SKILL_GROUPS.map((group, i) => (

{group.title}

{group.title === "Talen" ? group.items.map((s) => ) : group.items.map((s) => )}
))}

Interesses

{CV_DATA.interests.map((interest) => ( {interest} ))}
); }