import React from 'react'; import { useApp } from '../context/AppContext'; import { Star, MapPin, Clock, Tag, Package, Building2, AlertTriangle, Sparkles, CalendarDays, Megaphone } from 'lucide-react'; export const TenderCard = ({ tender }) => { const { toggleTrackTender, setActiveTenderDetail, favoriteKurumlar, toggleFavoriteKurum, kalemEslesen, searchQuery } = useApp(); // Aramada eşleşen kalemler öne alınır — firma kendi ürününü hemen görsün. const eslesenKalemler = (kalemEslesen && tender.ikn && kalemEslesen.get(tender.ikn)) || null; const isFavKurum = favoriteKurumlar?.includes((tender.kurum || '').trim()); const [day, monthYear] = tender.tarih ? tender.tarih.split('.') : ['01', '01.2026']; const monthYearFormatted = monthYear ? `${monthYear}` : '08.2026'; // İlan (yayım) tarihi kaynaklara göre farklı biçimde geliyor: // canlı akış ISO (2026-08-30), DT/arşiv gg.aa.yyyy. İkisini de gösterebilelim. const ilanTarihiGoster = (() => { const v = tender.ilanTarihi; if (!v) return null; if (/^\d{4}-\d{2}-\d{2}/.test(v)) { const [y, a, g] = v.slice(0, 10).split('-'); return `${g}.${a}.${y}`; } return v; })(); return (
{/* Left Date Block */}
setActiveTenderDetail(tender)} className="bg-[#edf4ff] group-hover:bg-[#e2edff] text-blue-900 md:w-36 p-4 flex flex-col items-center justify-center shrink-0 border-b md:border-b-0 md:border-r border-blue-100 cursor-pointer select-none transition-colors" > İhale {day} {monthYearFormatted} {tender.saat}
{/* Main Card Content */}
{/* Top Header Row */}

setActiveTenderDetail(tender)} className="font-bold text-sm sm:text-base text-slate-900 hover:text-blue-600 cursor-pointer leading-snug tracking-tight" > {tender.baslik} {tender.isYeni && ( YENİ )}

{/* Bookmark Star Button */}
{/* Subtitle Details */}
{tender.kurum} {tender.sehir} {ilanTarihiGoster && ( İlan: {ilanTarihiGoster} )} {tender.tarih && ( İhale: {tender.tarih}{tender.saat ? ` ${tender.saat}` : ''} )} {tender.kalemSayisi > 0 && ( {tender.kalemSayisi} kalem )} {tender.eklenmeZamani && !ilanTarihiGoster && ( {tender.eklenmeZamani} )} # {tender.ikn}
{/* Badges Row */}
{tender.alimTuru} {tender.sektor} {tender.cpvLabel && tender.cpvLabel !== 'Genel' && tender.cpvLabel !== tender.sektor && ( {tender.cpvLabel} )} {tender.aciliyetBadge && ( {tender.aciliyetBadge} )} {tender.aiMatchScore != null && ( `‘${n.terim}’ ${n.alan}nde geçiyor`).join('\n') : 'Profilinizdeki terimlerden hiçbiri bu ihalede geçmiyor'} className="bg-blue-50 text-blue-700 border border-blue-200 text-[11px] font-bold px-2 py-1 rounded-md flex items-center gap-1"> %{tender.aiMatchScore} Uyumlu )} {tender.kaynak && ( 🟢 {tender.kaynak} )}
{/* Teklif cetveli kalemleri (ortak havuz) — firmanın kendi ürününü şartnameyi indirmeden görebilmesi için kartta gösterilir. */} {tender.kalemSayisi > 0 && (
setActiveTenderDetail(tender)} className="bg-indigo-50/60 hover:bg-indigo-50 rounded-lg p-2.5 border border-indigo-200 space-y-1.5 cursor-pointer transition-colors" >

{eslesenKalemler ? 'Aramanızla eşleşen kalemler' : 'Teklif cetveli kalemleri'}

{(eslesenKalemler ? eslesenKalemler.slice(0, 3).map((k) => k) : (tender.kalemler || []).slice(0, 3).map((ad) => ({ ad })) ).map((k, idx) => (
{k.ad} {k.miktar != null && ( {k.miktar.toLocaleString('tr-TR')} {k.birim || ''} )}
))} {tender.kalemSayisi > 3 && (

+ {tender.kalemSayisi - 3} kalem daha — tümünü gör

)}
)} {/* Material Items Preview Box */} {!tender.kalemSayisi && tender.items && tender.items.length > 0 && (
setActiveTenderDetail(tender)} className="bg-slate-50 hover:bg-slate-100/80 rounded-lg p-2.5 border border-slate-200 space-y-1.5 cursor-pointer transition-colors" > {tender.items.slice(0, 3).map((item, idx) => (
{item.ad} {item.miktar} {item.birim || 'adet'}
))} {tender.items.length > 3 && (

+ {tender.items.length - 3} malzeme kalemi daha...

)}
)}
); };