"use client"; import { useMemo } from "react"; import { useTranslations } from "next-intl"; import { Users, Plus } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import type { ContactCard } from "@/lib/jmap/types"; import { getContactDisplayName } from "@/stores/contact-store"; interface ContactGroupListProps { groups: ContactCard[]; selectedGroupId: string | null; onSelectGroup: (id: string) => void; onCreateGroup: () => void; searchQuery: string; className?: string; } export function ContactGroupList({ groups, selectedGroupId, onSelectGroup, onCreateGroup, searchQuery, className, }: ContactGroupListProps) { const t = useTranslations("contacts"); const filtered = useMemo(() => { if (!searchQuery) return groups; const lower = searchQuery.toLowerCase(); return groups.filter((g) => getContactDisplayName(g).toLowerCase().includes(lower) ); }, [groups, searchQuery]); const sorted = useMemo(() => { return [...filtered].sort((a, b) => getContactDisplayName(a).localeCompare(getContactDisplayName(b)) ); }, [filtered]); return (
{searchQuery ? t("empty_search") : t("groups.empty")}