import { Text, HStack, Link, Spinner, Stack, Heading } from '@chakra-ui/react' import { useToast } from '@/hooks/useToast' import { Plan } from '@typebot.io/prisma' import React from 'react' import { PlanTag } from './PlanTag' import { BillingPortalButton } from './BillingPortalButton' import { trpc } from '@/lib/trpc' import { Workspace } from '@typebot.io/schemas' import { useScopedI18n } from '@/locales' type Props = { workspace: Pick onCancelSuccess: () => void } export const CurrentSubscriptionSummary = ({ workspace, onCancelSuccess, }: Props) => { const scopedT = useScopedI18n('billing.currentSubscription') const { showToast } = useToast() const { mutate: cancelSubscription, isLoading: isCancelling } = trpc.billing.cancelSubscription.useMutation({ onError: (error) => { showToast({ description: error.message, }) }, onSuccess: onCancelSuccess, }) const isSubscribed = (workspace.plan === Plan.STARTER || workspace.plan === Plan.PRO) && workspace.stripeId return ( {scopedT('heading')} {scopedT('subheading')} {isCancelling ? ( ) : ( <> {isSubscribed && ( cancelSubscription({ workspaceId: workspace.id }) } > {scopedT('cancelLink')} )} )} {isSubscribed && !isCancelling && ( <> {scopedT('billingPortalDescription')} )} ) }