import React, { useState } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { HiAcademicCap, HiClock, HiUsers, HiMapPin, HiXMark, HiCheckBadge, HiCalendar } from 'react-icons/hi2' import dayjs from 'dayjs' import { mockTrainings, mockCertificates, Training } from '../../../mocks/mockIntranetData' const TrainingModule: React.FC = () => { const [selectedTraining, setSelectedTraining] = useState(null) const [selectedTab, setSelectedTab] = useState<'all' | 'upcoming' | 'ongoing' | 'completed'>('all') const [trainings, setTrainings] = useState(mockTrainings) const [showEnrollSuccess, setShowEnrollSuccess] = useState(false) const filteredTrainings = selectedTab === 'all' ? trainings : trainings.filter(t => t.status === selectedTab) const handleEnroll = (trainingId: string) => { setTrainings(prev => prev.map(t => t.id === trainingId && t.enrolled < t.maxParticipants ? { ...t, enrolled: t.enrolled + 1 } : t )) // Seçili eğitimi de güncelle if (selectedTraining?.id === trainingId && selectedTraining.enrolled < selectedTraining.maxParticipants) { setSelectedTraining(prev => prev ? { ...prev, enrolled: prev.enrolled + 1 } : null) } setShowEnrollSuccess(true) setTimeout(() => setShowEnrollSuccess(false), 3000) } const getCategoryColor = (category: string) => { const colors: Record = { technical: 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300', 'soft-skills': 'bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-300', management: 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300', compliance: 'bg-orange-100 dark:bg-orange-900/30 text-orange-700 dark:text-orange-300', other: 'bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300' } return colors[category] || colors.other } const getStatusBadge = (status: string) => { const badges: Record = { upcoming: { bg: 'bg-blue-100 dark:bg-blue-900/30', text: 'text-blue-700 dark:text-blue-300' }, ongoing: { bg: 'bg-green-100 dark:bg-green-900/30', text: 'text-green-700 dark:text-green-300' }, completed: { bg: 'bg-gray-100 dark:bg-gray-700', text: 'text-gray-700 dark:text-gray-300' } } return badges[status] || badges.upcoming } return (
{/* Header */}

🎓 Eğitimler & Sertifikalar

Kişisel gelişim ve eğitim kayıtları

{/* Stats */}
{[ { label: 'Tümü', value: mockTrainings.length, tab: 'all' as const }, { label: 'Yaklaşan', value: mockTrainings.filter(t => t.status === 'upcoming').length, tab: 'upcoming' as const }, { label: 'Devam Eden', value: mockTrainings.filter(t => t.status === 'ongoing').length, tab: 'ongoing' as const }, { label: 'Tamamlanan', value: mockTrainings.filter(t => t.status === 'completed').length, tab: 'completed' as const } ].map((stat, idx) => ( setSelectedTab(stat.tab)} initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ delay: idx * 0.1 }} className={`p-4 rounded-lg border-2 transition-all ${ selectedTab === stat.tab ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/20' : 'border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 hover:border-blue-300' }`} >
{stat.value}
{stat.label}
))}
{/* Eğitimler */}
{filteredTrainings.map((training, idx) => { const badge = getStatusBadge(training.status) return ( setSelectedTraining(training)} className="bg-white dark:bg-gray-800 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 hover:shadow-lg transition-all cursor-pointer" > {training.thumbnail && ( {training.title} )}
{training.category} {training.status === 'upcoming' ? 'Yaklaşan' : training.status === 'ongoing' ? 'Devam Ediyor' : 'Tamamlandı'}

{training.title}

{training.description}

{training.instructor}
{dayjs(training.startDate).format('DD MMM YYYY')}
{training.duration} saat
{training.enrolled} / {training.maxParticipants} katılımcı
{training.enrolled < training.maxParticipants && training.status === 'upcoming' && ( )}
) })}
{/* Sertifikalar */}

Sertifikalarım

{mockCertificates.map((cert, idx) => (
{cert.score && ( {cert.score} )}

{cert.trainingTitle}

{dayjs(cert.issueDate).format('DD MMMM YYYY')}

{cert.expiryDate && (

Geçerlilik: {dayjs(cert.expiryDate).format('DD/MM/YYYY')}

)}
))}
{/* Training Detail Modal */} {selectedTraining && ( <> setSelectedTraining(null)} />

Eğitim Detayları

{selectedTraining.thumbnail && ( {selectedTraining.title} )}

{selectedTraining.title}

{selectedTraining.description}

Eğitmen

{selectedTraining.instructor}

Kategori

{selectedTraining.category}

Tarih

{dayjs(selectedTraining.startDate).format('DD MMM')} - {dayjs(selectedTraining.endDate).format('DD MMM YYYY')}

Süre

{selectedTraining.duration} saat

Tip

{selectedTraining.type}

{selectedTraining.location && (

Konum

{selectedTraining.location}

)}

Doluluk Oranı

{selectedTraining.enrolled} / {selectedTraining.maxParticipants}
{selectedTraining.enrolled < selectedTraining.maxParticipants && selectedTraining.status === 'upcoming' && ( )}
)} {/* Success Notification */} {showEnrollSuccess && (

Kayıt Başarılı!

Eğitime kayıt oldunuz.

)}
) } export default TrainingModule