import React, { useEffect, useState } from "react"; import { View, ActivityIndicator, ScrollView, Image, Pressable, useColorScheme, } from "react-native"; import { ScreenWrapper } from "@/components/ScreenWrapper"; import { Text } from "@/components/ui/text"; import { Card, CardContent } from "@/components/ui/card"; import { ArrowLeft, Edit, Building2, Hash, Mail, Phone, Globe, MapPin, Calendar, } from "@/lib/icons"; import { useSirouRouter } from "@sirou/react-native"; import { AppRoutes } from "@/lib/routes"; import { api } from "@/lib/api"; export default function CompanyDetailsScreen() { const nav = useSirouRouter(); const isDark = useColorScheme() === "dark"; const iconCol = isDark ? "#94a3b8" : "#64748b"; const [loading, setLoading] = useState(true); const [company, setCompany] = useState(null); useEffect(() => { const load = async () => { try { setLoading(true); const res = await api.company.get(); setCompany(res?.data ?? res); } finally { setLoading(false); } }; load(); }, []); const fmtDate = (d: string) => d ? new Date(d).toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric", }) : "—"; if (loading) { return ( ); } return ( nav.back()} className="h-9 w-9 rounded-[10px] bg-card items-center justify-center border border-border" > Company Details nav.go("company/edit")} className="h-9 w-9 rounded-[10px] bg-card items-center justify-center border border-border" > {/* Hero */} {company?.logoPath ? ( ) : ( )} {company?.name || "Company"} {company?.tin && ( TIN: {company.tin} )} {/* Contact */} Contact {company?.phone && ( } label="Phone" value={company.phone} isLast={!company?.email && !company?.website} /> )} {company?.email && ( } label="Email" value={company.email} isLast={!company?.website} /> )} {company?.website && ( } label="Website" value={company.website} isLast /> )} {!company?.phone && !company?.email && !company?.website && ( No contact information )} {/* Address */} Address {company?.address && ( } label="Street" value={company.address} isLast={!company?.city && !company?.state && !company?.zipCode && !company?.country} /> )} {(company?.city || company?.state) && ( } label="City / State" value={[company?.city, company?.state].filter(Boolean).join(", ")} isLast={!company?.zipCode && !company?.country} /> )} {(company?.zipCode || company?.country) && ( } label="Zip / Country" value={[company?.zipCode, company?.country].filter(Boolean).join(", ")} isLast /> )} {!company?.address && !company?.city && !company?.state && ( No address information )} {/* Info */} Account } label="Created" value={fmtDate(company?.createdAt)} isLast={!company?.updatedAt} /> {company?.updatedAt && ( } label="Last Updated" value={fmtDate(company?.updatedAt)} isLast /> )} ); } function InfoRow({ icon, label, value, isLast, }: { icon: React.ReactNode; label: string; value: string; isLast?: boolean; }) { return ( {icon} {label} {value} ); }