import { useDeadlineClock } from '../hooks/useDeadlineClock'; import React, { useMemo } from 'react'; import { useApp } from '../context/AppContext'; import { Layers, CalendarPlus, Star, BellRing, EyeOff } from 'lucide-react'; import { acikIhale, hizliFiltreGecer } from '../services/ihaleTarih'; export const SummaryCards = () => { const now = useDeadlineClock(); const { tenders, quickFilter, setQuickFilter, setActiveTab, oncekiGiris, favoriteKurumlar } = useApp(); // Sayımlar listedeki filtreyle AYNI ölçütü kullanır (ihaleTarih.js); karta // tıklayınca gelen liste ile karttaki sayı birbirini tutar. const sayim = useMemo(() => { const secenek = { favoriteKurumlar: favoriteKurumlar || [], oncekiGirisMs: oncekiGiris }; const say = (id) => tenders.filter((t) => acikIhale(t, now) && hizliFiltreGecer(t, id, secenek)).length; return { all: say('all'), bugun_eklenenler: say('bugun_eklenenler'), takiptekiler: say('takiptekiler'), son_giris: say('son_giris'), incelenmedi: say('incelenmedi'), }; }, [tenders, oncekiGiris, favoriteKurumlar, now]); const cards = [ { id: 'all', label: 'AKTİF İHALELER', count: sayim.all, icon: Layers, color: 'blue' }, { id: 'bugun_eklenenler', label: 'BUGÜN EKLENENLER', count: sayim.bugun_eklenenler, icon: CalendarPlus, color: 'emerald' }, { id: 'takiptekiler', label: 'TAKİP ETTİKLERİM', count: sayim.takiptekiler, icon: Star, color: 'amber' }, { id: 'son_giris', label: 'SON GİRİŞTEN BERİ', count: sayim.son_giris, icon: BellRing, color: 'purple', title: oncekiGiris ? `Önceki ziyaretinizden (${new Date(oncekiGiris).toLocaleString('tr-TR')}) sonra yayımlanan ilanlar` : 'İlk ziyaretiniz — bugün yayımlanan ilanlar gösteriliyor' }, { id: 'incelenmedi', label: 'İNCELENMEMİŞ', count: sayim.incelenmedi, icon: EyeOff, color: 'rose' } ]; return (
{card.label}
{card.count.toLocaleString('tr-TR')}