"use client"; import { useTranslations } from "next-intl"; import { Users, Pencil, Trash2, UserMinus, Mail } from "lucide-react"; import { Avatar } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import type { ContactCard } from "@/lib/jmap/types"; import { getContactDisplayName, getContactPrimaryEmail } from "@/stores/contact-store"; interface ContactGroupDetailProps { group: ContactCard; members: ContactCard[]; onEdit: () => void; onDelete: () => void; onRemoveMember: (memberId: string) => void; onSelectMember: (id: string) => void; /** Compose an email to every member with the recipients placed in `field`. */ onComposeGroup?: (field: "to" | "cc" | "bcc") => void; isMobile?: boolean; className?: string; } export function ContactGroupDetail({ group, members, onEdit, onDelete, onRemoveMember, onSelectMember, onComposeGroup, isMobile, className, }: ContactGroupDetailProps) { const t = useTranslations("contacts"); const groupName = getContactDisplayName(group); const hasEmailMembers = members.some((m) => getContactPrimaryEmail(m).trim()); return (

{groupName}

{t("groups.member_count", { count: members.length })}

{onComposeGroup && hasEmailMembers && (
{t("groups.send_email")}
{(["to", "cc", "bcc"] as const).map((field) => ( ))}
)}

{t("groups.members_label")}

{members.length === 0 ? (

{t("groups.no_members")}

) : (
{members.map((member) => { const mName = getContactDisplayName(member); const mEmail = getContactPrimaryEmail(member); return (
); })}
)}
); }