import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { SubscriptionStatus } from '@prisma/client'; import { Loader } from 'lucide-react'; import type Stripe from 'stripe'; import { match } from 'ts-pattern'; import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation'; import { canExecuteOrganisationAction } from '@documenso/lib/utils/organisations'; import { trpc } from '@documenso/trpc/react'; import { BillingPlans } from '~/components/general/billing-plans'; import { OrganisationBillingPortalButton } from '~/components/general/organisations/organisation-billing-portal-button'; import { OrganisationBillingInvoicesTable } from '~/components/tables/organisation-billing-invoices-table'; import { appMetaTags } from '~/utils/meta'; export function meta() { return appMetaTags('Billing'); } export default function TeamsSettingBillingPage() { const { _, i18n } = useLingui(); const organisation = useCurrentOrganisation(); const { data: subscriptionQuery, isLoading: isLoadingSubscription } = trpc.enterprise.billing.subscription.get.useQuery({ organisationId: organisation.id, }); if (isLoadingSubscription || !subscriptionQuery) { return (
{currentProductName ? ( You are currently subscribed to{' '} {currentProductName} ) : ( You currently have an active plan )} {organisationSubscription.periodEnd && ( {' '} which is set to{' '} {organisationSubscription.cancelAtPeriodEnd ? ( end on{' '} {i18n.date(organisationSubscription.periodEnd)}. ) : ( automatically renew on{' '} {i18n.date(organisationSubscription.periodEnd)}. )} )}
)) .with('INACTIVE', () => (
{currentProductName ? (
{currentProductName ? (