import React, { useState, useEffect } from "react"; import { View, ScrollView, Pressable, TextInput, ActivityIndicator, RefreshControl, useColorScheme, } from "react-native"; import { Text } from "@/components/ui/text"; import { Card, CardContent } from "@/components/ui/card"; import { ScreenWrapper } from "@/components/ScreenWrapper"; import { StandardHeader } from "@/components/StandardHeader"; import { ShadowWrapper } from "@/components/ShadowWrapper"; import { useSirouRouter } from "@sirou/react-native"; import { AppRoutes } from "@/lib/routes"; import { Stack } from "expo-router"; import { api } from "@/lib/api"; import { UserPlus, Search, Mail, Phone, ChevronRight, Briefcase, } from "@/lib/icons"; export default function CompanyScreen() { const nav = useSirouRouter(); const colorScheme = useColorScheme(); const isDark = colorScheme === "dark"; const [workers, setWorkers] = useState([]); const [loading, setLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const [searchQuery, setSearchQuery] = useState(""); const fetchWorkers = async () => { try { const response = await api.users.getAll(); setWorkers(response.data || []); } catch (error) { console.error("[CompanyScreen] Error fetching workers:", error); } finally { setLoading(false); setRefreshing(false); } }; useEffect(() => { fetchWorkers(); }, []); const onRefresh = () => { setRefreshing(true); fetchWorkers(); }; const filteredWorkers = workers.filter((worker) => { const name = `${worker.firstName} ${worker.lastName}`.toLowerCase(); const email = (worker.email || "").toLowerCase(); const query = searchQuery.toLowerCase(); return name.includes(query) || email.includes(query); }); return ( {/* Search Bar */} {/* Worker List Header */} Workers ({filteredWorkers.length}) {loading ? ( ) : ( } contentContainerStyle={{ paddingBottom: 100 }} > {filteredWorkers.length > 0 ? ( filteredWorkers.map((worker) => ( {worker.firstName?.[0]} {worker.lastName?.[0]} {worker.firstName} {worker.lastName} {worker.role || "WORKER"} )) ) : ( No workers found )} )} {/* Floating Action Button */} nav.go("user/create")} className="absolute bottom-8 right-8 h-14 w-14 bg-primary rounded-full items-center justify-center shadow-lg shadow-primary/40" > ); }