"use client"; import { Building2, Users, TrendingUp, BarChart3, Target } from "lucide-react"; import { TeamStatsRow, getSkillLevelLabel, getSkillLevelColor, } from "../team-detail/team-stats-row"; interface DirectionOverviewProps { direction: string; teams: Array<{ teamId: string; teamName: string; direction: string; totalMembers: number; averageSkillLevel: number; topSkills: Array<{ skillName: string; averageLevel: number }>; skillCoverage: number; }>; totalMembers: number; averageSkillLevel: number; topCategories: Array<{ category: string; averageLevel: number }>; onViewTeamDetails?: (team: any) => void; onExportTeamReport?: (team: any) => void; } // Fonction pour obtenir les couleurs de direction function getDirectionColors(direction: string) { const directionLower = direction.toLowerCase(); if (directionLower.includes("tech") || directionLower.includes("dev")) { return { header: "from-blue-600/30 to-cyan-600/30", border: "border-blue-500/40", icon: "bg-blue-500/20 border-blue-500/30", }; } else if ( directionLower.includes("design") || directionLower.includes("ux") ) { return { header: "from-purple-600/30 to-pink-600/30", border: "border-purple-500/40", icon: "bg-purple-500/20 border-purple-500/30", }; } else if ( directionLower.includes("data") || directionLower.includes("analytics") ) { return { header: "from-emerald-600/30 to-teal-600/30", border: "border-emerald-500/40", icon: "bg-emerald-500/20 border-emerald-500/30", }; } else if ( directionLower.includes("security") || directionLower.includes("sec") ) { return { header: "from-red-600/30 to-orange-600/30", border: "border-red-500/40", icon: "bg-red-500/20 border-red-500/30", }; } else { return { header: "from-purple-600/30 to-blue-600/30", border: "border-purple-500/40", icon: "bg-purple-500/20 border-purple-500/30", }; } } export function DirectionOverview({ direction, teams, totalMembers, averageSkillLevel, topCategories, onViewTeamDetails = () => {}, onExportTeamReport = () => {}, }: DirectionOverviewProps) { const colors = getDirectionColors(direction); return (

Direction {direction}

{totalMembers}
Niveau: {getSkillLevelLabel(averageSkillLevel)}
{/* Direction Metrics */}
{/* Top Categories */}

Top Catégories

{topCategories.slice(0, 4).map((cat, idx) => (
{cat.category}
{cat.averageLevel.toFixed(1)}
))}
{/* Overall Progress */}

Progression Globale

Maîtrise globale: {((averageSkillLevel / 3) * 100).toFixed(0)}%
Basé sur {teams.length} équipes
{/* Team Distribution */}

Répartition

{teams.length}
équipes actives
Membres par équipe: {(totalMembers / teams.length).toFixed(1)}
Équipes performantes: {teams.filter((t) => t.averageSkillLevel > 2).length}
{/* Teams List */}

Équipes de la direction

{teams.map((team) => ( onViewTeamDetails(team)} onViewReport={() => onExportTeamReport(team)} /> ))}
); }