import React, { useEffect, useState } from "react"; import { View, ScrollView, Pressable, ActivityIndicator, Image, } from "react-native"; import { useSirouRouter } from "@sirou/react-native"; import { useLocalSearchParams } from "expo-router"; import { AppRoutes } from "@/lib/routes"; import { ScreenWrapper } from "@/components/ScreenWrapper"; import { StandardHeader } from "@/components/StandardHeader"; import { Text } from "@/components/ui/text"; import { Card, CardContent } from "@/components/ui/card"; import { api } from "@/lib/api"; import { useColorScheme } from "nativewind"; import { Mail, Phone, ShieldCheck, Calendar, ChevronRight, } from "@/lib/icons"; export default function TeamMemberDetailsScreen() { const nav = useSirouRouter(); const { id } = useLocalSearchParams<{ id: string }>(); const { colorScheme } = useColorScheme(); const isDark = colorScheme === "dark"; const [member, setMember] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const load = async () => { try { setLoading(true); const res = await api.team.getById({ params: { id } }); setMember(res?.data ?? res); } catch (err) { console.error("[TeamMemberDetails] Error:", err); } finally { setLoading(false); } }; load(); }, [id]); const iconCol = isDark ? "#94a3b8" : "#64748b"; if (loading) { return ( ); } if (!member) { return ( Worker not found ); } return ( {/* Avatar + Name */} {member.avatar ? ( ) : ( {member.firstName?.[0]} {member.lastName?.[0]} )} {member.firstName} {member.lastName} {member.role?.replace("_", " ") || "MEMBER"} {member.status && ( {member.status} )} {/* Contact Info */} Contact Information Email {member.email || "—"} Phone {member.phone || "—"} Role {member.role?.replace("_", " ") || "MEMBER"} {/* Activity */} Recent Activity {member.activities && member.activities.length > 0 ? ( {member.activities.map((act: any, i: number) => ( {act.description || act.action} {act.createdAt ? new Date(act.createdAt).toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", }) : ""} ))} ) : ( No recent activity )} {/* Account Info */} Account Information Created {member.createdAt ? new Date(member.createdAt).toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric", }) : "—"} Last Updated {member.updatedAt ? new Date(member.updatedAt).toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric", }) : "—"} ); }