import { ExternalLink, BookOpen, Target, Info } from "lucide-react"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { Skill, SkillLevel, SKILL_LEVELS } from "@/lib/types"; import { getTechIcon } from "@/components/icons/tech-icons"; interface SkillEvaluationCardProps { skill: Skill; currentLevel: SkillLevel; onUpdateSkill: (skillId: string, level: SkillLevel) => void; } function getLevelColor(level: Exclude) { switch (level) { case "never": return "bg-red-500"; case "not-autonomous": return "bg-amber-500"; case "autonomous": return "bg-green-500"; case "expert": return "bg-violet-500"; } } function getLevelColorBorder(level: Exclude) { switch (level) { case "never": return "border-red-500"; case "not-autonomous": return "border-amber-500"; case "autonomous": return "border-green-500"; case "expert": return "border-violet-500"; } } export function SkillEvaluationCard({ skill, currentLevel, onUpdateSkill, }: SkillEvaluationCardProps) { const TechIcon = getTechIcon(skill.id); return (
{/* Skill Info */}

{skill.name}

{/* Info tooltip */}

{skill.description}

{skill.links.length > 0 && (

Liens utiles :

{skill.links.map((link, index) => ( {new URL(link).hostname} ))}
)}
{/* Level Selection */}
{Object.entries(SKILL_LEVELS).map(([value, label]) => { const isSelected = currentLevel === value; const levelValue = value as Exclude; return (
onUpdateSkill(skill.id, levelValue)} > {label}
); })} {/* Goal buttons */}

Envie d'apprendre

Peut encadrer

); }