"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 real avatars from API response (pick up to 4 with an avatar). const realAvatars: AdvisorAvatar[] = advisors .filter((a) => a.avatar_url) .slice(0, 4) .map((a) => ({ id: a.username, src: a.avatar_url ?? FALLBACK_AVATAR, })); const displayAvatars = realAvatars.length > 0 ? realAvatars : fallbackAvatars; // Show total remaining advisors (capped at advisor count minus shown avatars). const displayExtraCount = advisors.length > 0 ? Math.max(0, advisors.length - displayAvatars.length) : fallbackExtraCount; return (

{title}

{description}

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