"use client"; import { motion, type Variants, useReducedMotion } from "framer-motion"; import { usePortfolioData } from "@/lib/usePortfolioData"; import { Section } from "./Section"; import { DrawLine } from "./animations/DrawLine"; import { CounterValue } from "./animations/CounterValue"; import { SectionLoading } from "./SectionLoading"; export default function Skills() { const { data, loading, error } = usePortfolioData(); const shouldReduceMotion = useReducedMotion(); if (loading) { return ; } if (error || !data) { return
Error loading skill registry
; } const gridVariants: Variants = { hidden: {}, visible: { transition: { delayChildren: 0.06, staggerChildren: 0.08, }, }, }; const cardVariants: Variants = { hidden: shouldReduceMotion ? { opacity: 0 } : { opacity: 0, y: 20, clipPath: "inset(100% 0 0 0)" }, visible: { opacity: 1, y: 0, clipPath: "inset(0% 0 0 0)", transition: shouldReduceMotion ? { duration: 0.25 } : { duration: 0.8, ease: [0.16, 1, 0.3, 1] }, }, }; return (
{data.skills.technical.map((category, index) => (
ID_0{index + 1}X

{category.category}

    {category.skills.map((skill) => (
  • {skill}
  • ))}
))}
); }