// SearchResultsScreen.tsx import { useTheme } from '@/components/ThemeContext'; import { Award, Building2, Calendar, ChevronLeft, DollarSign, Info, Mail, MapPin, Phone, User, } from 'lucide-react-native'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { FlatList, Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; type TabType = 'entity' | 'entrepreneur' | 'trademark'; interface SearchResult { entity: any; entrepreneur: any; trademark: any; } interface SearchResultsScreenProps { searchData: SearchResult; onBack: () => void; } export default function SearchResultsScreen({ searchData, onBack }: SearchResultsScreenProps) { const { isDark } = useTheme(); const { t } = useTranslation(); const [activeTab, setActiveTab] = useState('entity'); const tabs = [ { key: 'entity' as TabType, label: 'Korxonalar', icon: Building2, count: searchData.entity.name.total + searchData.entity.director.total + searchData.entity.founder.total, }, { key: 'entrepreneur' as TabType, label: 'Tadbirkorlar', icon: User, count: searchData.entrepreneur.total, }, { key: 'trademark' as TabType, label: 'Tovar belgilari', icon: Award, count: searchData.trademark.total, }, ]; const renderTabs = () => ( {tabs.map((tab) => { const Icon = tab.icon; const isActive = activeTab === tab.key; return ( setActiveTab(tab.key)} > {tab.label} {tab.count > 0 && ( {tab.count > 9999 ? '9999+' : tab.count} )} ); })} ); const renderEntityCard = (item: any, variant: string) => ( {/* Header */} {item.activity_state === 1 ? 'Faol' : 'Faol emas'} {variant && ( {variant === 'director' ? 'Direktor' : variant === 'founder' ? "Ta'sischi" : 'Nomi'} )} {/* Company Name */} {item.name} {/* INN */} INN: {item.inn} {/* Director */} {item.director && ( Direktor: {item.director} )} {/* Address */} {item.address && ( Manzil: {item.address} )} {/* Registration Date */} {item.registration_date && ( Ro'yxatga olingan: {new Date(item.registration_date).toLocaleDateString('uz-UZ')} )} {/* Activity */} {item.oked_code} {item.oked_name} {/* Contact Info */} {item.email && ( {item.email} )} {item.phones?.length > 0 && ( {item.phones[0]} )} {/* Statutory Fund */} {item.statutory_fund && ( Ustav fondi: {parseFloat(item.statutory_fund).toLocaleString('uz-UZ')} so'm )} ); const renderEntrepreneurCard = (item: any) => ( {item.entrepreneur} PINFL: {item.pinfl} {item.registration_date && ( Ro'yxatga olingan: {new Date(item.registration_date).toLocaleDateString('uz-UZ')} )} {item.email && ( {item.email} )} {item.phone && ( {item.phone} )} ); const renderTrademarkCard = (item: any) => ( {item.logo && ( )} {item.transliteration} {item.status_name} Ariza beruvchi: {item.applicant} {item.registration_date && ( Ro'yxatga olingan: {new Date(item.registration_date).toLocaleDateString('uz-UZ')} )} {item.relevance_date && ( Amal qilish muddati: {new Date(item.relevance_date).toLocaleDateString('uz-UZ')} )} ); const renderContent = () => { switch (activeTab) { case 'entity': const allEntities = [ ...searchData.entity.name.rows.map((r: any) => ({ ...r, variant: 'name' })), ...searchData.entity.director.rows.map((r: any) => ({ ...r, variant: 'director' })), ...searchData.entity.founder.rows.map((r: any) => ({ ...r, variant: 'founder' })), ]; return ( `entity-${item.id}-${index}`} renderItem={({ item }) => renderEntityCard(item, item.variant)} contentContainerStyle={styles.listContent} showsVerticalScrollIndicator={false} ListEmptyComponent={ Korxonalar topilmadi } /> ); case 'entrepreneur': return ( `entrepreneur-${item.id}`} renderItem={({ item }) => renderEntrepreneurCard(item)} contentContainerStyle={styles.listContent} showsVerticalScrollIndicator={false} ListEmptyComponent={ Tadbirkorlar topilmadi } /> ); case 'trademark': return ( `trademark-${item.id}`} renderItem={({ item }) => renderTrademarkCard(item)} contentContainerStyle={styles.listContent} showsVerticalScrollIndicator={false} ListEmptyComponent={ Tovar belgilari topilmadi } /> ); } }; return ( {/* Header */} Qidiruv natijalari {/* Tabs */} {renderTabs()} {/* Content */} {renderContent()} ); } const styles = StyleSheet.create({ container: { flex: 1, }, header: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', paddingHorizontal: 16, paddingVertical: 12, }, backButton: { padding: 4, }, headerTitle: { fontSize: 18, fontWeight: '700', }, tabsContainer: { flexDirection: 'row', paddingHorizontal: 16, gap: 8, marginBottom: 16, }, tab: { flex: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'center', paddingVertical: 12, paddingHorizontal: 8, borderRadius: 12, gap: 6, }, activeTab: { shadowColor: '#3b82f6', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.3, shadowRadius: 4, elevation: 3, }, tabText: { fontSize: 13, fontWeight: '600', }, badge: { paddingHorizontal: 6, paddingVertical: 2, borderRadius: 10, minWidth: 20, alignItems: 'center', }, badgeText: { color: '#ffffff', fontSize: 10, fontWeight: '700', }, listContent: { paddingHorizontal: 16, paddingBottom: 24, }, card: { borderRadius: 16, padding: 16, marginBottom: 12, borderWidth: 1, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1, shadowRadius: 4, elevation: 2, }, cardHeader: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginBottom: 12, }, statusBadge: { paddingHorizontal: 10, paddingVertical: 4, borderRadius: 8, }, statusText: { color: '#ffffff', fontSize: 12, fontWeight: '600', }, variantBadge: { paddingHorizontal: 10, paddingVertical: 4, borderRadius: 8, }, variantText: { fontSize: 12, fontWeight: '600', }, cardTitle: { fontSize: 16, fontWeight: '700', marginBottom: 12, }, infoRow: { flexDirection: 'row', alignItems: 'center', gap: 8, marginBottom: 8, }, infoLabel: { fontSize: 13, fontWeight: '500', }, infoValue: { fontSize: 13, fontWeight: '600', flex: 1, }, activityBox: { padding: 12, borderRadius: 8, marginTop: 8, marginBottom: 8, }, activityCode: { fontSize: 14, fontWeight: '700', marginBottom: 4, }, activityName: { fontSize: 12, lineHeight: 18, }, contactRow: { gap: 8, marginTop: 8, }, contactItem: { flexDirection: 'row', alignItems: 'center', gap: 6, }, contactText: { fontSize: 12, }, fundRow: { flexDirection: 'row', alignItems: 'center', gap: 8, marginTop: 12, paddingTop: 12, borderTopWidth: 1, borderTopColor: '#334155', }, fundLabel: { fontSize: 13, fontWeight: '500', }, fundValue: { fontSize: 14, fontWeight: '700', }, entrepreneurHeader: { flexDirection: 'row', alignItems: 'center', gap: 12, marginBottom: 16, }, avatarCircle: { width: 56, height: 56, borderRadius: 28, alignItems: 'center', justifyContent: 'center', }, entrepreneurName: { fontSize: 16, fontWeight: '700', marginBottom: 4, }, pinfl: { fontSize: 12, fontWeight: '500', }, trademarkHeader: { flexDirection: 'row', alignItems: 'center', gap: 12, marginBottom: 16, }, trademarkLogo: { width: 64, height: 64, borderRadius: 8, }, trademarkName: { fontSize: 15, fontWeight: '700', marginBottom: 8, }, emptyState: { alignItems: 'center', justifyContent: 'center', paddingVertical: 60, }, emptyText: { fontSize: 16, fontWeight: '500', marginTop: 12, }, });