import React, {useState, useEffect } from 'react'; import { useApp } from '../context/AppContext'; import { INSTITUTION_TYPES_LIST, CITIES_LIST } from '../data/constants'; import { Compass, Zap, Wrench, Calendar, Eye, EyeOff, FileText, CheckCircle2, XCircle, Archive, Bot, PlusCircle, Trash2, ChevronDown, ChevronUp, Filter, MapPin, Building2, Tag, Star, Hash } from 'lucide-react'; export const LeftSidebar = () => { const { favoriteKurumlar, quickFilter, setQuickFilter, setActiveTab, savedFilters, deleteSavedFilter, selectedAlimTuru, setSelectedAlimTuru, selectedSektorler, setSelectedSektorler, toggleSektor, sektorListesi, selectedCpvler, setSelectedCpvler, toggleCpv, cpvBolumListesi, setIsUrunAramaOpen, setUrunAramaBaslangic, selectedKurumTipi, setSelectedKurumTipi, selectedCity, setSelectedCity, clearAllFilters } = useApp(); const [sektorAra, setSektorAra] = useState(''); const [cpvAra, setCpvAra] = useState(''); // OKAS kataloğu: idarenin kendi kodu. "ortopedi" başlıkta geçmese de kod yakalar. const [okasQ, setOkasQ] = useState(''); const [okasSonuc, setOkasSonuc] = useState([]); useEffect(() => { const t = okasQ.trim(); if (t.length < 2) { setOkasSonuc([]); return; } let iptal = false; const z = setTimeout(() => import('../services/kalem') .then(({ okasAra }) => okasAra(t)) .then((k) => { if (!iptal) setOkasSonuc(k.slice(0, 12)); }) .catch(() => {}), 350); return () => { iptal = true; clearTimeout(z); }; }, [okasQ]); const okasIleAra = (k) => { setUrunAramaBaslangic({ okasKod: k.kod, okasAd: k.ad }); setIsUrunAramaOpen(true); }; const [openSections, setOpenSections] = useState({ alimTuru: true, sektorler: true, cpv: false, kurumTipleri: false, iller: false }); const toggleSection = (key) => { setOpenSections(prev => ({ ...prev, [key]: !prev[key] })); }; const quickNavItems = [ { id: 'all', label: 'Güncel Tüm İhaleler', icon: Compass }, { id: 'favori_kurumlar', label: 'Favori Kurumlarım', icon: Star, badge: favoriteKurumlar?.length ? String(favoriteKurumlar.length) : null }, { id: 'dogrudan_temin', label: 'Doğrudan Temin', icon: Zap, badge: 'Popüler' }, { id: 'ihaleler', label: 'İhaleler (Açık/Pazarlık)', icon: Wrench }, { id: 'bugun_eklenenler', label: 'Bugün Eklenenler', icon: Calendar }, { id: 'incelenenler', label: 'İncelediğim İhaleler', icon: Eye }, { id: 'incelenmedi', label: 'İncelemediklerim', icon: EyeOff }, { id: 'sozlesmeler', label: 'Sözleşme İmzalananlar', icon: FileText }, { id: 'sonuclananlar', label: 'Sonuçlananlar', icon: CheckCircle2 }, { id: 'iptal', label: 'İptal Edilenler', icon: XCircle }, { id: 'arsiv', label: 'İhale Arşivi', icon: Archive } ]; return ( ); };