'use client' import { ActiveUserBalance } from '@/app/groups/[groupId]/expenses/active-user-balance' import { CategoryIcon } from '@/app/groups/[groupId]/expenses/category-icon' import { DocumentsCount } from '@/app/groups/[groupId]/expenses/documents-count' import { Button } from '@/components/ui/button' import { getGroupExpenses } from '@/lib/api' import { Currency } from '@/lib/currency' import { cn, formatCurrency, formatDate } from '@/lib/utils' import { ChevronRight } from 'lucide-react' import { useLocale, useTranslations } from 'next-intl' import Link from 'next/link' import { useRouter } from 'next/navigation' import { Fragment } from 'react' type Expense = Awaited>[number] function Participants({ expense, participantCount, }: { expense: Expense participantCount: number }) { const t = useTranslations('ExpenseCard') const key = expense.amount > 0 ? 'paidBy' : 'receivedBy' const paidFor = expense.paidFor.length == participantCount && participantCount >= 4 ? ( {t('everyone')} ) : ( expense.paidFor.map((paidFor, index) => ( {index !== 0 && <>, } {paidFor.participant.name} )) ) const participants = t.rich(key, { strong: (chunks) => {chunks}, paidBy: expense.paidBy.name, paidFor: () => paidFor, forCount: expense.paidFor.length, }) return <>{participants} } type Props = { expense: Expense currency: Currency groupId: string participantCount: number } export function ExpenseCard({ expense, currency, groupId, participantCount, }: Props) { const router = useRouter() const locale = useLocale() return (
{ router.push(`/groups/${groupId}/expenses/${expense.id}/edit`) }} >
{expense.title}
{formatCurrency(currency, expense.amount, locale)}
{formatDate(expense.expenseDate, locale, { dateStyle: 'medium' })}
) }