import type { ReactNode } from 'react'; import { X, Trophy, Calendar, Award, Users, BookOpen, Tag } from 'lucide-react'; import type { Achievement } from '../data'; import { useLang } from '../context/LanguageContext'; interface AchievementModalProps { achievement: Achievement | null; onClose: () => void; } function InfoRow({ icon, label, value }: { icon: ReactNode; label: string; value: string }) { return (
{icon}

{label}

{value}

); } export default function AchievementModal({ achievement, onClose }: AchievementModalProps) { const { t } = useLang(); if (!achievement) return null; return (
e.stopPropagation()} > {/* Image header */}
{achievement.title}
{/* Close button */} {/* Rank badge */}
{achievement.rank} {achievement.level}
{/* Content */}
{achievement.category}

{achievement.title}

{/* Info grid */}
} label={t.modal.tim} value={achievement.team} /> {achievement.nim && ( } label={t.modal.nim} value={achievement.nim} /> )} } label={t.modal.angkatan} value={achievement.generation} /> } label={t.modal.tahun} value={String(achievement.year)} /> } label={t.modal.kompetisi} value={achievement.competition} /> } label={t.modal.bidang} value={achievement.category} />
{/* Members list */} {achievement.members && achievement.members.length > 0 && (

Anggota Tim

    {achievement.members.map((m, i) => (
  • {m.nama.charAt(0).toUpperCase()}
    {m.nama} {m.angkatan && Angkatan {m.angkatan}}
  • ))}
)} {/* Description */}

{t.modal.deskripsi}

{achievement.description.replace(/\*\*/g, '')}

{/* Close button */}
); }