'use client'; import { useState, useEffect, useCallback } from 'react'; import { useTranslations } from 'next-intl'; import { motion } from 'framer-motion'; import { Database, Server, Code2, Bot, Workflow, FileCode2 } from 'lucide-react'; interface Skill { name: string; level: number; } interface SkeletonProps { className?: string; } const Skeleton: React.FC = ({ className }) => (
); const SkillsSkeleton = () => (
{/* Skills Progress Bars Skeleton */}
{[1, 2, 3, 4, 5, 6, 7, 8].map((i) => (
))}
{/* Skills Icons Grid Skeleton */}
{[1, 2, 3, 4, 5, 6].map((i) => (
))}
); const iconMap: Record = { 'AI & LLMs': , 'Automation': , 'Automatizacija': , 'Python': , 'TypeScript': , 'Datenbank': , 'Database': , 'Baze podataka': , 'DevOps': }; const Skills = () => { const t = useTranslations('pages.home.skills'); const [skills, setSkills] = useState([]); const handleHoverStart = useCallback((skillName: string) => { setSelectedSkill(skillName); }, []); const handleHoverEnd = useCallback(() => { setSelectedSkill(null); }, []); useEffect(() => { // Temporary delay to see skeleton loading state const timer = setTimeout(() => { try { const translatedSkills = t.raw('skills') as Skill[]; if (Array.isArray(translatedSkills)) { setSkills(translatedSkills); } } catch (error) { console.error('Error loading skills:', error); setSkills([]); } }, 2000); return () => clearTimeout(timer); }, [t]); if (skills.length === 0) { return ; } return (

{t('title')}

{/* Skills Progress Bars */}
{skills.map((skill, idx) => (
{skill.name} {skill.level}%
))}
{/* Skills Icons Grid */}
{skills.map((skill, idx) => ( <<<<<<< HEAD handleHoverStart(skill.name)} onHoverEnd={handleHoverEnd} role="button" > {iconMap[skill.name] || } {skill.name} {selectedSkill === skill.name && ( {skill.description}
)} =======
{iconMap[skill.name] || }
{skill.name} >>>>>>> origin/master ))}
); }; export default Skills;