import { useState } from 'react'; import { View, Text, FlatList, ActivityIndicator, StyleSheet, SafeAreaView, TouchableOpacity, Image } from 'react-native'; import { useRouter } from 'expo-router'; import { Ionicons } from '@expo/vector-icons'; import { useOutlets } from '@/hooks/useApi'; import OutletCard from '@/components/OutletCard'; import BottomTabBar from '@/components/BottomTabBar'; import SearchModal from '@/components/SearchModal'; import LanguageModal from '@/components/LanguageModal'; import { useLanguage } from '@/contexts/LanguageContext'; export default function HomeScreen() { const [activeFilter, setActiveFilter] = useState<'people' | 'topics' | 'companies'>('people'); const [showSearch, setShowSearch] = useState(false); const [showLanguage, setShowLanguage] = useState(false); const { language, setLanguage } = useLanguage(); const router = useRouter(); const { data: outlets, isLoading, error } = useOutlets(activeFilter, language); if (error) { return ( Error: {error.message} Check if the server is running on localhost:8050 ); } return ( {/* Header */} setShowSearch(true)}> setShowLanguage(true)}> {/* Content Area */} {showSearch ? ( setShowSearch(false)} /> ) : ( <> {/* Outlets List */} {isLoading ? ( Loading outlets... ) : ( `${activeFilter}-${item.id}-${index}`} renderItem={({ item }: any) => ( router.push(`/outlet/${id}`)} /> )} contentContainerStyle={styles.list} showsVerticalScrollIndicator={false} ListEmptyComponent={ No outlets found } /> )} )} {/* Bottom Tab Bar */} {/* Language Modal */} setShowLanguage(false)} currentLanguage={language} onSelectLanguage={setLanguage} /> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#f5f5f5', }, header: { backgroundColor: '#fff', paddingHorizontal: 16, paddingVertical: 12, borderBottomWidth: 1, borderBottomColor: '#e0e0e0', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', }, contentContainer: { flex: 1, overflow: 'hidden', }, headerLeft: { alignItems: 'flex-start', }, logo: { height: 16, }, headerRight: { flexDirection: 'row', alignItems: 'center', gap: 8, }, iconButton: { padding: 8, }, list: { padding: 16, paddingBottom: 16, }, loadingContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', }, errorContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20, }, text: { fontSize: 14, color: '#666', marginTop: 10, }, errorText: { fontSize: 16, color: 'red', fontWeight: 'bold', }, emptyText: { fontSize: 14, color: '#666', textAlign: 'center', marginTop: 20, }, });