"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { ChevronDown, ChevronRight, ExternalLink } from "lucide-react"; import { getCategoryIcon } from "@/lib/category-icons"; import { getScoreColors } from "@/lib/score-utils"; import { SkillProgress } from "./skill-progress"; import Link from "next/link"; interface CategoryCardProps { category: { category: string; score: number; maxScore: number; }; categoryEval?: { category: string; selectedSkillIds: string[]; skills: Array<{ skillId: string; level: string | null; }>; }; skillCategory?: { category: string; icon: string; skills: Array<{ id: string; name: string; icon?: string; }>; }; } export function CategoryCard({ category, categoryEval, skillCategory, }: CategoryCardProps) { const [isExpanded, setIsExpanded] = useState(false); const skillsCount = categoryEval?.selectedSkillIds?.length || 0; const evaluatedCount = categoryEval?.skills.filter((s) => s.level !== null).length || 0; const CategoryIcon = skillCategory ? getCategoryIcon(skillCategory.icon) : null; return (
setIsExpanded(!isExpanded)} >
{isExpanded ? ( ) : ( )} {CategoryIcon && }

{category.category}

{skillsCount > 0 ? ( (() => { const colors = getScoreColors(category.score); return (
{Math.round((category.score / 3) * 100)}%
); })() ) : (
Aucune
)}
{skillsCount > 0 ? `${evaluatedCount}/${skillsCount} compétences sélectionnées évaluées` : "Aucune compétence sélectionnée"}
{skillsCount > 0 ? (
{(() => { const colors = getScoreColors(category.score); return (
); })()}
) : (
)}
{/* Expanded Skills */} {isExpanded && (
{categoryEval && skillCategory && skillsCount > 0 ? (
{categoryEval.selectedSkillIds.map((skillId) => { const skill = skillCategory.skills.find( (s) => s.id === skillId ); if (!skill) return null; const skillEval = categoryEval.skills.find( (s) => s.skillId === skillId ); return ( ); })}
) : (

Aucune compétence sélectionnée dans cette catégorie

)}
0 ? "mt-3 pt-3 border-t border-white/10" : "" }`} >
)}
); }