"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Loader2 } from "lucide-react"; import { AppHeader } from "@/components/layout/app-header"; import { PageHeader } from "@/components/layout/page-header"; import { AssociateTable } from "@/components/associations/associate-table"; import { AssociationInfoCard } from "@/components/associations/association-info-card"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { getAssociation } from "@/lib/api"; import type { Association } from "@/lib/models"; export default function ClientPortalPage() { const router = useRouter(); const [association, setAssociation] = useState(null); const [loading, setLoading] = useState(true); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!mounted) return; const associationId = localStorage.getItem("association_id"); if (!associationId) { router.push("/login"); return; } getAssociation(associationId) .then(setAssociation) .catch((error) => { console.error("Failed to load association:", error); router.push("/login"); }) .finally(() => setLoading(false)); }, [mounted, router]); if (!mounted || loading) { return (
); } if (!association) { return null; } return (
Soci ({association.associates?.length ?? 0})
); }