import { useMemo } from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { File } from 'lucide-react'; import { DateTime } from 'luxon'; import { Link } from 'react-router'; import { trpc } from '@documenso/trpc/react'; import { Button } from '@documenso/ui/primitives/button'; import type { DataTableColumnDef } from '@documenso/ui/primitives/data-table'; import { DataTable } from '@documenso/ui/primitives/data-table'; import { Skeleton } from '@documenso/ui/primitives/skeleton'; import { TableCell } from '@documenso/ui/primitives/table'; export type OrganisationBillingInvoicesTableProps = { organisationId: string; subscriptionExists: boolean; }; export const OrganisationBillingInvoicesTable = ({ organisationId, subscriptionExists, }: OrganisationBillingInvoicesTableProps) => { const { _ } = useLingui(); const { data, isLoading, isLoadingError } = trpc.enterprise.billing.invoices.get.useQuery( { organisationId, }, { placeholderData: (previousData) => previousData, }, ); const formatCurrency = (currency: string, amount: number) => { const formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency, }); return formatter.format(amount); }; const results = { data: data || [], perPage: 100, currentPage: 1, totalPages: 1, }; const columns = useMemo(() => { return [ { header: _(msg`Invoice`), accessorKey: 'created', cell: ({ row }) => (
{DateTime.fromSeconds(row.original.created).toFormat('MMMM yyyy')}
), }, { header: _(msg`Status`), accessorKey: 'status', cell: ({ row }) => { const { status } = row.original; if (!status) { return 'N/A'; } return status.charAt(0).toUpperCase() + status.slice(1); }, }, { header: _(msg`Amount`), accessorKey: 'total', cell: ({ row }) => formatCurrency(row.original.currency, row.original.total / 100), }, { id: 'actions', cell: ({ row }) => (
), }, ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[]; }, []); if (results.data.length === 0 && !subscriptionExists) { return null; } return (
), }} > {/* {(table) => } */}
); };