import { motion } from 'framer-motion'; import { Footprints, BookOpen, Scale, StretchHorizontal, Factory, GraduationCap, Target, Award, Lock, Unlock, Trophy } from 'lucide-react'; import type { Badge } from '../../types'; const ICON_MAP: Record> = { Footprints, BookOpen, Scale, StretchHorizontal, Factory, GraduationCap, Target, Award, }; interface BadgeCardProps { badge: Badge; size?: 'sm' | 'md' | 'lg'; } export function BadgeCard({ badge, size = 'md' }: BadgeCardProps) { const Icon = ICON_MAP[badge.icono] || Trophy; const sizeClasses = { sm: { container: 'p-3', icon: 20, title: 'text-xs', desc: 'text-[10px]', }, md: { container: 'p-4', icon: 28, title: 'text-sm', desc: 'text-xs', }, lg: { container: 'p-5', icon: 36, title: 'text-base', desc: 'text-sm', }, }; if (badge.desbloqueado) { return (

{badge.titulo}

{badge.descripcion}

{badge.fechaDesbloqueo && (

Desbloqueado: {new Date(badge.fechaDesbloqueo).toLocaleDateString()}

)}
); } return (

{badge.titulo}

{badge.descripcion}

); } interface BadgesGridProps { badges: Badge[]; columns?: 2 | 3 | 4; size?: 'sm' | 'md' | 'lg'; } export function BadgesGrid({ badges, columns = 4, size = 'md' }: BadgesGridProps) { const columnClasses = { 2: 'grid-cols-2', 3: 'grid-cols-2 md:grid-cols-3', 4: 'grid-cols-2 md:grid-cols-3 lg:grid-cols-4', }; return (
{badges.map((badge, index) => ( ))}
); } interface BadgesSectionProps { badgesDesbloqueados: Badge[]; badgesBloqueados: Badge[]; } export function BadgesSection({ badgesDesbloqueados, badgesBloqueados }: BadgesSectionProps) { const totalBadges = badgesDesbloqueados.length + badgesBloqueados.length; const porcentaje = totalBadges > 0 ? Math.round((badgesDesbloqueados.length / totalBadges) * 100) : 0; return (
{/* Resumen */}

Logros

{badgesDesbloqueados.length} de {totalBadges} desbloqueados

{porcentaje}%
{/* Badges Desbloqueados */} {badgesDesbloqueados.length > 0 && (

Desbloqueados ({badgesDesbloqueados.length})

)} {/* Badges Bloqueados */} {badgesBloqueados.length > 0 && (

Por desbloquear ({badgesBloqueados.length})

)}
); } export default BadgesGrid;