diff --git a/components/admin/overview/direction-overview.tsx b/components/admin/overview/direction-overview.tsx
index a3d24ea..98cc564 100644
--- a/components/admin/overview/direction-overview.tsx
+++ b/components/admin/overview/direction-overview.tsx
@@ -2,10 +2,10 @@
import { Building2, Users, TrendingUp, BarChart3, Target } from "lucide-react";
import {
- TeamStatsCard,
+ TeamStatsRow,
getSkillLevelLabel,
getSkillLevelColor,
-} from "../team-detail/team-stats-card";
+} from "../team-detail/team-stats-row";
interface DirectionOverviewProps {
direction: string;
@@ -159,7 +159,7 @@ export function DirectionOverview({
- {/* Teams Grid */}
+ {/* Teams List */}
@@ -169,9 +169,9 @@ export function DirectionOverview({
Équipes de la direction
-
+
{teams.map((team) => (
-
;
+ skillCoverage: number;
+ onViewDetails?: () => void;
+ onViewReport?: () => void;
+}
+
+export function getSkillLevelLabel(level: number): string {
+ if (level < 0.5) return "Débutant";
+ if (level < 1.5) return "Intermédiaire";
+ if (level < 2.5) return "Avancé";
+ return "Expert";
+}
+
+export function getSkillLevelColor(level: number): string {
+ if (level < 0.5) return "bg-red-500";
+ if (level < 1.5) return "bg-orange-500";
+ if (level < 2.5) return "bg-blue-500";
+ return "bg-green-500";
+}
+
+export function getSkillLevelBadgeClasses(level: number): string {
+ if (level < 0.5) return "bg-red-500/20 border-red-500/30 text-red-300";
+ if (level < 1.5)
+ return "bg-orange-500/20 border-orange-500/30 text-orange-300";
+ if (level < 2.5) return "bg-blue-500/20 border-blue-500/30 text-blue-300";
+ return "bg-green-500/20 border-green-500/30 text-green-300";
+}
+
+export function getProgressColor(percentage: number): string {
+ if (percentage < 30) return "bg-red-500";
+ if (percentage < 60) return "bg-orange-500";
+ if (percentage < 80) return "bg-blue-500";
+ return "bg-green-500";
+}
+
+export function TeamStatsRow({
+ teamId,
+ teamName,
+ direction,
+ totalMembers,
+ averageSkillLevel,
+ topSkills,
+ skillCoverage,
+ onViewDetails,
+ onViewReport,
+}: TeamStatsRowProps) {
+ return (
+
+ {/* Layout horizontal compact */}
+
+ {/* Informations de base */}
+
+
+
+ {/* Mini barre de progression */}
+
+
+ Niveau
+
+ {((averageSkillLevel / 3) * 100).toFixed(0)}%
+
+
+
+
+
+
+ {/* Indicateurs clés compacts */}
+
+
+
+ {averageSkillLevel.toFixed(1)}
+
+
/ 3.0
+
+
+
+
+ {skillCoverage.toFixed(0)}%
+
+
Couv.
+
+
+
+
+
+
+
+ {averageSkillLevel < 0.5
+ ? "D"
+ : averageSkillLevel < 1.5
+ ? "I"
+ : averageSkillLevel < 2.5
+ ? "A"
+ : "E"}
+
+
+
+
+
+ {getSkillLevelLabel(averageSkillLevel)}
+
+
+
+
+
+
+ {/* Top skills mini */}
+
+ {topSkills.slice(0, 3).map((skill, idx) => (
+
+
+ {skill.skillName}
+
+
+ {((skill.averageLevel / 3) * 100).toFixed(0)}%
+
+
+ ))}
+
+
+ {/* Actions compactes */}
+
+
+
+
+
+
+ );
+}