"use client"; import Link from "next/link"; import { useMarriageAdvisorsQuery } from "@/hooks/marriage/use-marriage-advisors"; import { localizePath } from "@/translations/config"; import { useI18n } from "@/translations/provider"; import NetworkImage from "./network-image"; const FALLBACK_AVATAR = "/assets/images/Avatar Image.png"; export type AdvisorAvatar = { id: string; src: string; }; type AdvisorActionsCardProps = { title: string; description: string; /** Static fallback avatars — used only while the API hasn't responded yet. */ avatars: AdvisorAvatar[]; extraCount: number; getAdvisorLabel: string; getAdvisorHref?: string; onGetAdvisor?: () => void; className?: string; }; export function AdvisorActionsCard({ title, description, avatars: fallbackAvatars, extraCount: fallbackExtraCount, getAdvisorLabel, getAdvisorHref, onGetAdvisor, className, }: AdvisorActionsCardProps) { const { locale } = useI18n(); const { data, isLoading } = useMarriageAdvisorsQuery(); const advisors = data?.results ?? []; // Derive up to 3 avatars from API response (or fallback if empty). const realAvatars: AdvisorAvatar[] = advisors.slice(0, 3).map((a, idx) => ({ id: a.username || `advisor-${idx}`, src: a.avatar_url || (fallbackAvatars[idx]?.src ?? FALLBACK_AVATAR), })); const displayAvatars = realAvatars.length > 0 ? realAvatars : fallbackAvatars.slice(0, 3); // Show total remaining advisors (capped at advisor count minus shown avatars). const totalCount = advisors.length > 0 ? advisors.length : fallbackAvatars.length + fallbackExtraCount; const displayExtraCount = Math.max(0, totalCount - displayAvatars.length); return (

{title}

{description}

{isLoading ? /* ── Shimmer circles while API loads ── */ Array.from({ length: 3 }).map((_, i) => ( )) : displayAvatars.map((avatar, idx) => ( ))} {!isLoading && displayExtraCount > 0 && ( +{displayExtraCount} )}
{getAdvisorHref ? ( {getAdvisorLabel} ) : ( )}
); } export default AdvisorActionsCard;