import { Building2, MapPin, Phone } from "lucide-react"; import { Skeleton } from "@/components/ui/skeleton"; import { EmptyState } from "@/components/ui/empty-state"; import { ErrorState } from "@/components/ui/error-state"; import { PageHeader } from "@/components/PageHeader"; import { ProviderDrawer } from "@/components/ProviderDrawer"; import { useProviderDrawerUrlState } from "@/hooks/useProviderDrawerUrlState"; import { useProviders } from "@/hooks/useProviders"; import { fmt } from "@/lib/format"; export function Providers() { const { data, isLoading, isError, error, refetch } = useProviders(); const items = data?.items ?? []; const { providerNpi, open, close } = useProviderDrawerUrlState(); return (
Provider directory} subtitle="NPIs registered with the clearinghouse for 837P submission and 835 remittance retrieval." /> {isError ? ( refetch()} /> ) : null} {isLoading ? (
{Array.from({ length: 6 }).map((_, i) => ( ))}
) : items.length === 0 ? (
) : (
{items.map((p) => (
open(p.npi)} onKeyDown={(e) => { if (e.key === "Enter") open(p.npi); }} role="button" tabIndex={0} aria-label={`View provider ${p.name}`} className="group drillable surface-2 rounded-xl p-5 flex flex-col gap-4 transition-colors hover:bg-muted/20 cursor-pointer" >

{p.name}

NPI {p.npi} · TIN {p.taxId}

{p.address}, {p.city}, {p.state} {p.zip}
{p.phone}
Claims
{fmt.num(p.claimCount)}
Outstanding AR
{fmt.usd(p.outstandingAr)}
))}
)}
); }