import React from 'react' import { FaCalendarAlt, FaHeart } from 'react-icons/fa' import dayjs from 'dayjs' import { EventDto } from '@/proxy/intranet/models' import useLocale from '@/utils/hooks/useLocale' import { currentLocalDate } from '@/utils/dateUtils' import { useLocalization } from '@/utils/hooks/useLocalization' import { Avatar } from '@/components/ui' import { AVATAR_URL } from '@/constants/app.constant' interface UpcomingEventsProps { events: EventDto[] onEventClick?: (event: EventDto) => void } const getFirstPhoto = (photos?: string): string | null => { if (!photos) return null const parts = photos.split('|').filter(Boolean) return parts.length > 0 ? parts[0] : null } const photoSrc = (img: string) => { if ( img.startsWith('data:') || img.startsWith('http://') || img.startsWith('https://') || img.startsWith('/') ) return img return `data:image/jpeg;base64,${img}` } const UpcomingEvents: React.FC = ({ events, onEventClick }) => { const currentLocale = useLocale() const { translate } = useLocalization() const now = dayjs() const upcomingEvents = events .filter((event) => event.isPublished && !dayjs(event.date).isBefore(now, 'day')) .sort((left, right) => dayjs(left.date).valueOf() - dayjs(right.date).valueOf()) return (

{translate('::App.Platform.Intranet.Widgets.UpcomingEvents.Title')}

{upcomingEvents.length > 0 ? ( upcomingEvents.slice(0, 3).map((event) => { const firstPhoto = getFirstPhoto(event.photos) return (
onEventClick?.(event)} className={`p-6 transition-colors ${onEventClick ? 'cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700/50' : ''}`} >

{event.name}

{currentLocalDate(event.date, currentLocale || 'tr')} - {event.place}

{event.description && (

{event.description}

)}
{event.user.fullName} {dayjs(event.date).fromNow()} {event.likes > 0 && ( <> {event.likes} )}
{firstPhoto && ( {event.name} )}
) }) ) : (

{translate('::App.Platform.Intranet.Widgets.UpcomingEvents.NoEvent')}

)}
) } export default UpcomingEvents