/** * RankingTable.jsx * Displays the ranked list of candidates with scores, badges, and selection status. * Each row is clickable to show the full detail panel. */ import { Trophy, ChevronRight, CheckCircle, XCircle, TrendingUp } from 'lucide-react'; import ScoreRing from './ScoreRing'; function SkillBadge({ skill, variant = 'green' }) { return ( {skill} ); } function RankIcon({ rank }) { if (rank === 1) return 🥇; if (rank === 2) return 🥈; if (rank === 3) return 🥉; return ( {rank} ); } export default function RankingTable({ candidates, selectedId, onSelectCandidate, jobTitle }) { if (!candidates || candidates.length === 0) return null; return (
{candidates.length} candidates screened for {jobTitle}
| Rank | Candidate | Score | Skills Match | Exp Fit | Edu Fit | Status | |
|---|---|---|---|---|---|---|---|
|
|
{/* Candidate Info */}
{c.name}
{c.filename}
|
{/* Score Ring */}
|
{/* Skills Match */}
= 70 ? '#10b981' : skillPct >= 40 ? '#f59e0b' : '#ef4444'
}}
/>
{skillPct}%
{c.matched_skills.slice(0, 3).map(s => (
|
{/* Experience Fit */}
|
{/* Education Fit */}
{c.education_degree}
|
{/* Status Badge */}
{c.status === 'Selected' ? (
|
{/* Arrow */}
|