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...
)}
)}
);
};