import { View, Text, FlatList, TouchableOpacity, TextInput } from 'react-native'; import { useState, useCallback } from 'react'; import { useFocusEffect } from 'expo-router'; import { Plus, Search, X, ChevronRight } from 'lucide-react-native'; import { getDatabase } from '@/lib/database'; import { Territory, dbToTerritory } from '@/lib/territoryHelpers'; import { AddTerritorySheet } from '@/components/territories/AddTerritorySheet'; import { EmptyState } from '@/components/ui/EmptyState'; import { router } from 'expo-router'; export default function TerritoriesScreen() { const [territories, setTerritories] = useState([]); const [search, setSearch] = useState(''); const [showAdd, setShowAdd] = useState(false); async function loadTerritories() { const db = await getDatabase(); const rows = await db.getAllAsync('SELECT * FROM territories ORDER BY territory_code ASC'); setTerritories(rows.map(dbToTerritory)); } useFocusEffect(useCallback(() => { loadTerritories(); }, [])); const filtered = territories.filter((t) => t.territoryCode.toLowerCase().includes(search.toLowerCase()) || (t.barangay?.toLowerCase().includes(search.toLowerCase()) ?? false) || (t.municipality?.toLowerCase().includes(search.toLowerCase()) ?? false) ); return ( Territories setShowAdd(true)} className="bg-white/20 rounded-full p-2" accessibilityRole="button" accessibilityLabel="Add new territory" style={{ minWidth: 44, minHeight: 44, alignItems: 'center', justifyContent: 'center' }} > {search ? ( setSearch('')} accessibilityRole="button" accessibilityLabel="Clear search" hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }} > ) : null} item.id} contentContainerStyle={{ paddingHorizontal: 16, paddingBottom: 100, paddingTop: 12, gap: 8 }} renderItem={({ item }) => ( router.push({ pathname: '/territory/[id]', params: { id: item.id } })} className="bg-white rounded-2xl p-4 flex-row items-center shadow-sm" accessibilityRole="button" accessibilityLabel={`Territory ${item.territoryCode}${item.barangay ? `, ${item.barangay}` : ''}`} accessibilityHint="Tap to view territory details" style={{ minHeight: 72 }} > {item.territoryCode} {item.territoryCode} {item.barangay && {item.barangay}{item.municipality ? `, ${item.municipality}` : ''}} {item.area && Area: {item.area}{item.block ? ` • Block: ${item.block}` : ''}} )} ListEmptyComponent={() => search.length > 0 ? ( ) : ( setShowAdd(true)} /> ) } /> setShowAdd(false)} onSaved={() => { setShowAdd(false); loadTerritories(); }} /> ); }