'use client'; import { memo, useCallback } from 'react'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { BookText, Pencil, Trash2 } from 'lucide-react'; import type { GlossaryListItem } from './types'; import { useI18n, formatDate } from '@/lib/i18n'; interface GlossaryCardProps { glossary: GlossaryListItem; onEdit: (id: string) => void; onDelete: (id: string, name: string) => void; isDeleting?: boolean; } export const GlossaryCard = memo(function GlossaryCard({ glossary, onEdit, onDelete, isDeleting = false, }: GlossaryCardProps) { const { t, locale } = useI18n(); const handleEdit = useCallback(() => { onEdit(glossary.id); }, [glossary.id, onEdit]); const handleDelete = useCallback(() => { onDelete(glossary.id, glossary.name); }, [glossary.id, glossary.name, onDelete]); const formattedDate = formatDate(new Date(glossary.created_at), locale, { year: 'numeric', month: 'short', day: 'numeric', }); return (

{glossary.name}

{glossary.terms_count} {glossary.terms_count === 1 ? t('glossaries.card.term') : t('glossaries.card.terms')} {t('glossaries.card.created')} {formattedDate}
); });