import { PermissionAction } from '@supabase/shared-types/out/constants' import { ReactNode } from 'react' import { useFlag } from 'common' import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' import { cn } from 'ui' import { ButtonTooltip } from './ButtonTooltip' import { UpgradePlanButton } from './UpgradePlanButton' interface UpgradeToProProps { icon?: ReactNode primaryText: string secondaryText: string addon?: 'pitr' | 'customDomain' buttonText?: string source?: string disabled?: boolean fullWidth?: boolean } const UpgradeToPro = ({ icon, primaryText, secondaryText, addon, buttonText, source = 'upgrade', disabled = false, fullWidth = false, }: UpgradeToProProps) => { const { data: project } = useSelectedProjectQuery() const { data: organization } = useSelectedOrganizationQuery() const plan = organization?.plan?.id const { can: canUpdateSubscription } = useAsyncCheckPermissions( PermissionAction.BILLING_WRITE, 'stripe.subscriptions' ) const projectUpdateDisabled = useFlag('disableProjectCreationAndUpdate') return (
{icon &&
{icon}
}

{primaryText}

{secondaryText}

{!canUpdateSubscription || projectUpdateDisabled ? ( {buttonText || (plan === 'free' ? 'Upgrade to Pro' : 'Enable add on')} ) : ( {buttonText || (plan === 'free' ? 'Upgrade to Pro' : 'Enable add on')} )}
) } export default UpgradeToPro